一种windows系统下自动恢复逻辑驱动器的方法

文档序号:6627447阅读:246来源:国知局
一种windows系统下自动恢复逻辑驱动器的方法
【专利摘要】本发明公开一种windows系统下自动恢复逻辑驱动器的方法,属于信息安全领域,所述方法包括:获取可见逻辑驱动器的盘符数据,获取所有逻辑驱动器的盘符和盘符数据;根据所有逻辑驱动器的盘符数据和可见逻辑驱动器的盘符数据,获取丢失逻辑驱动器的盘符,对所有丢失逻辑驱动器的盘符中每个丢失逻辑驱动器的盘符执行以下操作:根据丢失逻辑驱动器的盘符,从系统注册表中获取丢失逻辑驱动器的GUID值,根据丢失逻辑驱动器的盘符和丢失逻辑驱动器的GUID值组织盘符加载命令数据,根据所述盘符加载命令数据恢复丢失逻辑驱动器的盘符。采用本发明的方案,避免了通过系统自带的磁盘管理工具进行手工查找和修复,实现了自动化。
【专利说明】-种windows系统下自动恢复逻辑驱动器的方法

【技术领域】
[0001] 本发明涉及信息安全领域,尤其涉及一种windows系统下自动恢复逻辑驱动器的 方法。

【背景技术】
[0002] 现有技术中,在windows系统平台环境下,相似驱动的情况在进行操作系统平台 的迁移时,由于在服务器系统镜像移植过程中,错写了逻辑驱动器的EBR(扩展引导记录) 而导致逻辑驱动器的盘符丢失的情况。
[0003] 现有方案是通过windows平台自带的工具"磁盘管理器"进行更改,需要人为的参 与,有悖于自动化的初衷。


【发明内容】

[0004] 本发明的目的是为了解决现有技术中存在的问题,提供了一种windows系统下自 动恢复逻辑驱动器的方法。
[0005] 本发明采用的技术方案是:一种windows系统下自动恢复逻辑驱动器的方法,包 括:
[0006] 步骤S1 :从系统中获取可见逻辑驱动器的盘符数据,从系统注册表中获取所有逻 辑驱动器的盘符和盘符数据;
[0007] 步骤S2 :根据所述所有逻辑驱动器的盘符数据和所述可见逻辑驱动器的盘符数 据,得到所有丢失逻辑驱动器的盘符数据;
[0008] 步骤S3 :根据所述所有丢失逻辑驱动器的盘符数据,从所述所有逻辑驱动器的盘 符中获取所有丢失逻辑驱动器的盘符;
[0009] 对所述所有丢失逻辑驱动器的盘符中每个丢失逻辑驱动器的盘符执行以下操 作:
[0010] 步骤T1 :根据丢失逻辑驱动器的盘符,从系统注册表中获取丢失逻辑驱动器的 ⑶ID值;
[0011] 步骤T2 :根据丢失逻辑驱动器的盘符和丢失逻辑驱动器的GUID值,调用加载命令 系统函数,组织盘符加载命令数据;
[0012] 步骤T3 :根据所述盘符加载命令数据,调用恢复盘符系统函数,恢复丢失逻辑驱 动器的盘符。
[0013] 所述步骤S2具体为:从所述所有逻辑驱动器的盘符数据中获取与所述可见逻辑 驱动器的盘符数据不同的盘符数据,作为所有丢失逻辑驱动器的盘符数据。
[0014] 所述步骤S2具体为:
[0015] 步骤al :从所述所有逻辑驱动器的盘符数据中获取第一个未处理的逻辑驱动器 的盘符数据,作为当前逻辑驱动器的盘符数据;
[0016] 步骤a2 :判断当前逻辑驱动器的盘符数据是否存在于所述可见逻辑驱动器的盘 符数据中,如果是,则执行步骤a3,否则将当前逻辑驱动器的盘符数据作为丢失逻辑驱动器 的盘符数据并保存,执行步骤a3 ;
[0017] 步骤a3 :判断所述所有逻辑驱动器的盘符数据中是否还有未处理的盘符数据,如 果是,则将当前逻辑驱动器的盘符数据的下一个未处理的逻辑驱动器的盘符数据作为当前 逻辑驱动器的盘符数据,返回步骤a2,否则获取到保存的所有丢失逻辑驱动器的盘符数据, 执行步骤S3。
[0018] 所述步骤a2具体为:
[0019] 步骤bl :从所述可见逻辑驱动器的盘符数据中获取第一个未处理的可见逻辑驱 动器的盘符数据,作为当前可见逻辑驱动器的盘符数据;
[0020] 步骤b2 :判断当前可见逻辑驱动器的盘符数据与当前逻辑驱动器的盘符数据是 否相同,如果是,则执行步骤b3,否则将当前逻辑驱动器的盘符作为丢失逻辑驱动器的盘符 保存,执行步骤e3;
[0021] 步骤b3 :判断所述可见逻辑驱动器的盘符数据中是否还有未处理的盘符数据,如 果是,则将当前可见逻辑驱动器的盘符数据的下一个未处理的可见逻辑驱动器的盘符数据 作为当前可见逻辑驱动器的盘符数据,返回步骤b2,否则执行步骤a3。
[0022] 所述步骤a2具体为:
[0023] 步骤cl :从所述可见逻辑驱动器的盘符数据中获取标识为未处理状态的可见逻 辑驱动器的盘符数据,作为当前可见逻辑驱动器的盘符数据;
[0024] 步骤c2 :判断当前可见逻辑驱动器的盘符数据与当前逻辑驱动器的盘符数据是 否相同,如果是,则执行步骤c3,否则将当前逻辑驱动器的盘符作为丢失逻辑驱动器的盘符 保存,执行步骤c3;
[0025] 步骤c3 :将可见逻辑驱动器的盘符数据的标识置为已处理状态,当前判断所述可 见逻辑驱动器的盘符数据中是否还有标识为未处理状态的盘符数据,如果是,则返回步骤 cl,否则执行步骤a3。
[0026] 所述步骤S2,具体为:
[0027] 步骤dl :从所述所有逻辑驱动器的盘符数据中获取标识为未处理状态的逻辑驱 动器的盘符数据,作为当前逻辑驱动器的盘符数据;
[0028] 步骤d2 :判断当前逻辑驱动器的盘符数据是否存在于所述可见逻辑驱动器的盘 符数据中,如果是,则执行步骤d3,否则将当前逻辑驱动器的盘符数据作为丢失逻辑驱动器 的盘符数据并保存,执行步骤d3 ;
[0029] 步骤d3 :将当前逻辑驱动器的盘符数据对应的标识置为已处理状态,判断所述所 有逻辑驱动器的盘符数据中是否还有标识为未处理的盘符数据,如果是,则返回步骤dl,否 则获取到保存的所有丢失逻辑驱动器的盘符数据,执行步骤S3。
[0030] 所述步骤d2具体为:
[0031] 步骤el :从所述可见逻辑驱动器的盘符数据中获取第一个未执行恢复操作的可 见逻辑驱动器的盘符数据,作为当前可见逻辑驱动器的盘符数据;
[0032] 步骤e2 :判断当前可见逻辑驱动器的盘符数据与当前逻辑驱动器的盘符数据是 否相同,如果是,则执行步骤e3,否则将当前逻辑驱动器的盘符作为丢失逻辑驱动器的盘符 保存,执行步骤e3;
[0033] 步骤e3 :判断所述可见逻辑驱动器的盘符数据中是否还有未执行恢复操作的盘 符数据,如果是,则将当前可见逻辑驱动器的盘符数据的下一个未执行恢复操作的可见逻 辑驱动器的盘符数据作为当前可见逻辑驱动器的盘符数据,返回步骤e2,否则执行步骤 d3。
[0034] 所述步骤d2具体为:
[0035] 步骤Π :从所述可见逻辑驱动器的盘符数据中获取标识为未处理状态的可见逻 辑驱动器的盘符数据,作为当前可见逻辑驱动器的盘符数据;
[0036] 步骤f2 :判断当前可见逻辑驱动器的盘符数据与当前逻辑驱动器的盘符数据是 否相同,如果是,则执行步骤f3,否则将当前逻辑驱动器的盘符作为丢失逻辑驱动器的盘符 保存,执行步骤f3;
[0037] 步骤f3 :将当前可见逻辑驱动器的盘符数据对应的标识置为已处理状态,判断所 述可见逻辑驱动器的盘符数据中是否还有标识为未处理状态的盘符数据,如果是,则返回 步骤Π ,否则执行步骤d3。
[0038] 所述步骤T1之前包括:
[0039] 步骤g :从所有丢失逻辑驱动器的盘符中选择一个未执行恢复操作的丢失逻辑驱 动器的盘符;
[0040] 所述步骤T3之后包括:
[0041] 步骤h :判断是否还有未执行恢复操作的丢失逻辑驱动器的盘符,如果是,则返回 步骤g,否则结束。
[0042] 所述步骤T1,还包括:判断从系统注册表中是否能够获取到丢失逻辑驱动器的 GUID值,如果是,则执行步骤T2,否则执行步骤h。
[0043] 所述步骤T3,还包括:
[0044] 步骤il :判断是否成功恢复所述丢失逻辑驱动器的盘符,如果是,则执行步骤g, 否则执行步骤i2 ;
[0045] 步骤i2 :判断所述丢失逻辑驱动器的盘符是否为预设最大盘符,如果是,则执行 步骤a2,否则更新所述丢失逻辑驱动器的盘符,返回步骤T3。
[0046] 所述步骤S1还包括:从系统中获取可见逻辑驱动器的盘符数量;
[0047] 所述从系统中获取可见逻辑驱动器的盘符数量,具体为:
[0048] 步骤kl :将可见逻辑驱动器的盘符数量置为初始值,调用获取可见逻辑驱动器盘 符数量函数,得到第一函数返回值;
[0049] 步骤k2 :获取所述第一函数返回值中包含的预设值的个数,将包含的预设值的个 数作为可见逻辑驱动器的盘符数量。
[0050] 所述步骤S1中,所述从系统中获取可见逻辑驱动器的盘符和盘符数据,具体为:
[0051] 步骤ml :获取所述可见逻辑驱动器的盘符数量;
[0052] 步骤m2 :调用获取可见逻辑驱动器盘符数据的函数,得到第二函数返回值,将所 述第二函数返回值作为可见逻辑驱动器中的盘符数据,并保存;
[0053] 步骤m3 :更新所述可见逻辑驱动器的盘符数量,判断所述可见逻辑驱动器的数量 是否大于〇,如果是,则执行步骤m2,否则获取到保存的可见逻辑驱动器中的盘符数据。
[0054] 所述步骤S1还包括:从系统注册表中获取所有逻辑驱动器的盘符数量;
[0055] 所述从系统注册表中获取所有逻辑驱动器的盘符和盘符数据,具体为:
[0056] 步骤nl :打开系统注册表中的预设注册表项;
[0057] 步骤n2 :从所述预设注册表项中获取一个未处理的注册表项名称,作为当前注册 表项名称;
[0058] 步骤n3 :判断当前注册表项名称是否包含第一预设字符串,如果是,则执行步骤 n4,否则执行步骤n6;
[0059] 步骤n4:获取当前注册表项名称中除所述第一预设字符串外的其余字符串数据, 作为逻辑驱动器的盘符,并保存;
[0060] 步骤n5 :更新所有逻辑驱动器的盘符数量,执行步骤n6 ;
[0061] 步骤n6 :判断当前注册表项名称是否为所述预设注册表项的最后一项名称,如果 是,则获取保存的所有逻辑驱动器的盘符,否则将当前注册表项名称的下一注册表项名称 作为当前注册表项名称,返回步骤π3。
[0062] 所述步骤S1中,所述从系统注册表中获取所有逻辑驱动器的盘符数据,具体为:
[0063] 步骤pi :获取所述所有逻辑驱动器的盘符数量;
[0064] 步骤p2 :调用获取逻辑驱动器盘符数据的函数,得到第三函数返回值,将所述第 三函数返回值作为所有逻辑驱动器的盘符数据并保存;
[0065] 步骤p3 :更新所述所有逻辑驱动器的盘符数量,判断更新后的所有逻辑驱动器的 盘符数量是否大于〇,如果是,则执行步骤P2,否则获取到保存的所有逻辑驱动器的盘符数 据。
[0066] 所述步骤n2和所述步骤n3之间还包括:获取当前注册表项名称对应的键值,判断 对应的键值是否以预设字符组合开头,如果是,则执行步骤n6,否则执行步骤n3。
[0067] 所述步骤n4,还包括:获取当前注册表项名称对应的盘符类型、键值和键值长度, 并保存。
[0068] 所述步骤T1中,所述获取所述丢失逻辑驱动器的GUID值,具体为:
[0069] 步骤ql :打开所述系统注册表中的预设注册表项;
[0070] 步骤q2 :从所述预设注册表项中获取未处理的一个注册表项名称,作为当前注册 表项名称;
[0071] 步骤q3 :判断当前注册表项名称中是否包含第二预设字符串,如果是,则执行步 骤q4,否则执行步骤q6;
[0072] 步骤q4 :获取当前注册表项名称中除第二预设字符串外的其余字符串数据和盘 符类型,将该字符串数据作为GUID值;
[0073] 步骤q5 :获取当前注册表项名称对应的盘符类型、键值和键值长度;
[0074] 步骤q6 :判断预设注册表项中是否还有未处理的注册表项名称,如果是,则执行 步骤q2,否则执行步骤q7;
[0075] 步骤q7 :关闭系统注册表,并获取保存的GUID值、盘符类型、键值和键值长度;
[0076] 步骤q8 :判断⑶ID值的数量是否大于0,如果是,则将第一个⑶ID值作为当前 GUID值,执行步骤q8,否则结束;
[0077] 步骤q9 :判断当前GUID值对应的键值长度与当前丢失逻辑驱动器的盘符对应的 键值长度是否相同,如果是,则执行步骤ql〇,否则执行步骤qll ;
[0078] 步骤qlO :判断当前GUID值对应的键值与所述当前逻辑驱动器的盘符对应的键值 是否相等,如果是,则将当前GUID值作为当前丢失逻辑驱动器的GUID值并保存,执行步骤 S4,否则执行步骤qll ;
[0079] 步骤qll :判断是否还有未处理的⑶ID值,如果是,则将当前⑶ID值的下一⑶ID 值作为当前GUID值,返回执行步骤q9,否则获取到丢失逻辑驱动器的GUID值。
[0080] 所述步骤q2和所述步骤q3之间还包括:获取当前注册表项名称对应的键值,判断 对应的键值是否以预设字符组合开头,如果是,则执行步骤q6,否则执行步骤q3。
[0081] 本发明取得的有益效果是:采用本发明的方案,避免了通过系统自带的磁盘管理 工具进行手工查找和修复,实现了自动化。

【专利附图】

【附图说明】
[0082] 为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。
[0083] 图1是本发明实施例一提供的一种windows系统下自动恢复逻辑驱动器的方法流 程图;
[0084] 图2是本发明实施例一中步骤101的具体细化图;
[0085] 图3是本发明实施例一中步骤102的具体细化图;
[0086] 图4是本发明实施例一中步骤109的具体细化图。

【具体实施方式】
[0087] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0088] 实施例一
[0089] 本发明实施例一提供了一种windows系统下自动恢复逻辑驱动器的方法,如图1 所示,包括:
[0090] 将第一主机中的操作系统拷贝到第二主机中时,会出现逻辑驱动器的盘符丢失的 现象,本实施例提供的是查找丢失盘符和重新恢复丢失盘符的方法,当第一主机操作系统 拷贝至第二主机完成后,第二主机执行以下操作:
[0091] 步骤101 :从系统中获取可见逻辑驱动器的盘符数据和盘符数量,并保存至第一 预设存储区中;
[0092] 本实施例中,逻辑驱动器包括挂载在主机上的可被识别为驱动器的设备,如光驱、 移动硬盘、U盘、虚拟磁盘等;
[0093] 本实施例中,参见图2,所述从系统中获取可见逻辑驱动器的盘符数据和盘符数 量,并保存至第一预设存储区中,具体为:
[0094] 步骤101-1:将可见逻辑驱动器的盘符数量置为初始值,调用获取可见逻辑驱动 器数量函数,得到第一函数返回值;
[0095] 本实施例优选的,将可见逻辑驱动器的盘符数据置为初始值0 ;
[0096] 具体的,调用 DWORD GetLogicalDrives (void);函数,得到 DWORD (DWORD 就是 Double Word,每个word为2个字节的长度,DWORD双字即为4个字节,每个字节是8位,共 32位)盘符类型的第一函数返回值,长度为32位,第一函数返回值的每一位标识对应一个 可见逻辑驱动器是否存在,预先约定,当第一函数返回值的某一位如果是1,则表示与该位 对应的逻辑驱动器存在,为可见逻辑驱动器,当第一函数返回值的某一位如果是〇,则表示 对应的逻辑驱动器不存在,为不可见逻辑驱动器;预先约定,函数返回值的第一位标识逻辑 驱动器"C:",第二位标识逻辑驱动器"D:",依此类推;例如,第一函数返回值的第二位为1, 则表示逻辑驱动器"D: "存在,第三位为0,则表示逻辑驱动器"E: "不存在;
[0097] 例如,本实施例中,得到的函数返回值为0x00000011 ;
[0098] 步骤101-2 :获取第一函数返回值中包含的预设值的个数,将包含的预设值的个 数作为可见逻辑驱动器的盘符数量;
[0099] 优选的,预设值为1;
[0100] 本实施例中,所述获取第一函数返回值中包含的预设值的个数,具体为:
[0101] 步骤al :将第一函数返回值与预设字节做与运算,判断运算结果的最后一位是否 为预设值,如果是,则执行步骤a2,否则执行步骤a3 ;
[0102] 优选的,预设字节0x00000001,预设值为1 ;
[0103] 例如,将第一函数返回值0x00000011与预设字节0x00000001做与运算,得到的运 算结果为0x00000001,最后一位为预设值1,执行步骤a2 ;
[0104] 步骤a2 :更新可见逻辑驱动器的盘符数量;
[0105] 本实施例中,所述更新可见逻辑驱动器的盘符数量,具体为:将可见逻辑驱动器的 盘符数量加1 ;优选的,可见逻辑驱动器的盘符数量初始值为〇 ;
[0106] 步骤a3 :将第一函数返回值右移一位得到的值作为新的第一函数返回值;
[0107] 例如,将第一函数返回值0x00000011右移一位,得到的值为0x00000001,作为更 新后的第一函数返回值;
[0108] 步骤a4:判断第一函数返回值是否大于0,如果是,则执行步骤al,否则将可见逻 辑驱动器的盘符数量保存至第一预设存储区中,执行步骤101-3 ;
[0109] 例如,本实施例中,得到的可见逻辑驱动器的盘符数量为2 ;
[0110] 本实施例中,所述获取第一函数返回值中包含的预设值的个数,还可以为:
[0111] 步骤bl :将第一函数返回值减预设数据后得到的值作为第一数值,将第一函数返 回值与所述第一数值做与运算,得到第一结果;
[0112] 本实施例中,所述预设数据为0x00000001 ;
[0113] 例如,第一函数返回值为0x00000011,减去预设数据0x00000001,得到第一数值 为0x00000010,将第一函数返回值0x00000011与第一数值0x00000010做与运算,得到第一 结果为 0x00000010 ;
[0114] 步骤b2 :更新可见逻辑驱动器的盘符数量;
[0115] 本实施例中,所述更新可见逻辑驱动器的盘符数量,具体为:将可见逻辑驱动器的 盘符数量加1 ;优选的,可见逻辑驱动器的盘符数量初始值为0 ;
[0116] 步骤b3 :判断第一结果是否为0,如果是,则将可见逻辑驱动器的盘符数量保存至 第一预设存储区中,执行步骤101-3,否则将函数返回值更新为第一结果,返回步骤bl ;
[0117] 步骤101-3 :获取可见逻辑驱动器的盘符数量;
[0118] 步骤101-4 :调用获取可见逻辑驱动器盘符数据的函数,得到第二函数返回值,将 第二函数返回值作为可见逻辑驱动器中的盘符数据;
[0119] 本实施例中,所述获取可见逻辑驱动器盘符数据的函数为
[0120] DWORD WINAPI GetLogicalDriveStrings(
[0121] _in DWORD nBufferLength,
[0122] -out LPTSTR lpBuffer
[0123] );其中,nBufferLength为第二函数返回值存放的缓存区长度,lpBuffer为需要 输出的第二函数返回值,通过调用该函数,获取系统中的可见逻辑驱动器的盘符数据,通过 参数lpBuffer将可见逻辑驱动器的盘符数据返回;
[0124] 例如,本实施例中,获取到的可见逻辑驱动器的盘符数据为:C:/〈NULL>,保存至第 一预设存储区中;
[0125] 步骤101-5 :更新可见逻辑驱动器的盘符数量,判断可见逻辑驱动器的数量是否 大于〇,如果是,则执行步骤101-4,否则执行步骤102 ;
[0126] 其中,更新可见逻辑驱动器的盘符数量,具体为:将可见逻辑驱动器的盘符数量减 1 ;
[0127] 步骤102 :从系统注册表中获取所有逻辑驱动器的盘符、盘符数据和盘符数量,并 保存至第二预设存储区中;
[0128] 本实施例中,所有逻辑驱动器包括可见分区逻辑驱动器和不可见逻辑驱动器,如 果所有逻辑驱动器的数量等于可见逻辑驱动器的数量,则说明没有不可见逻辑驱动器,即 没有丢失逻辑驱动器,如果所有逻辑驱动器的数量大于可见逻辑驱动器的数量,则说明存 在不可见逻辑驱动器,即存在丢失逻辑驱动器;
[0129] 本实施例中,参见图3,所述步骤102具体为:
[0130] 步骤102-1 :打开系统注册表中的预设注册表项;
[0131] 本实施例中,通过调用 long IRet = RegOpenKeyEx(HKEY_LOCAL_ MACHINE, lpPath, 0, KEY_READ, &hKey);打开系统注册表;其中,HKEY_L0CAL_MACHINE 为主 键、IpPath为子键、KEY_READ为打开方式、hKey为打开句柄;
[0132] 本实施例中,所述预设注册表项为:HKEY_LOCAL_MACHINE\SYSTEM\ MountedDevices;
[0133] 如表1所示,预设注册表项中的内容为:
[0134] 表 1
[0135]

【权利要求】
1. 一种windows系统下自动恢复逻辑驱动器的方法,其特征在于,包括: 步骤S1 :从系统中获取可见逻辑驱动器的盘符数据,从系统注册表中获取所有逻辑驱 动器的盘符和盘符数据; 步骤S2 :根据所述所有逻辑驱动器的盘符数据和所述可见逻辑驱动器的盘符数据,得 到所有丢失逻辑驱动器的盘符数据; 步骤S3 :根据所述所有丢失逻辑驱动器的盘符数据,从所述所有逻辑驱动器的盘符中 获取所有丢失逻辑驱动器的盘符; 对所述所有丢失逻辑驱动器的盘符中每个丢失逻辑驱动器的盘符执行以下操作: 步骤T1 :根据丢失逻辑驱动器的盘符,从系统注册表中获取丢失逻辑驱动器的GUID 值; 步骤T2 :根据丢失逻辑驱动器的盘符和丢失逻辑驱动器的GUID值,调用加载命令系统 函数,组织盘符加载命令数据; 步骤T3 :根据所述盘符加载命令数据,调用恢复盘符系统函数,恢复丢失逻辑驱动器 的盘符。
2. 根据权利要求1所述的方法,其特征在于,所述步骤S2具体为:从所述所有逻辑驱 动器的盘符数据中获取与所述可见逻辑驱动器的盘符数据不同的盘符数据,作为所有丢失 逻辑驱动器的盘符数据。
3. 根据权利要求1所述的方法,其特征在于,所述步骤S2具体为: 步骤al :从所述所有逻辑驱动器的盘符数据中获取第一个未处理的逻辑驱动器的盘 符数据,作为当前逻辑驱动器的盘符数据; 步骤a2 :判断当前逻辑驱动器的盘符数据是否存在于所述可见逻辑驱动器的盘符数 据中,如果是,则执行步骤a3,否则将当前逻辑驱动器的盘符数据作为丢失逻辑驱动器的盘 符数据并保存,执行步骤a3; 步骤a3 :判断所述所有逻辑驱动器的盘符数据中是否还有未处理的盘符数据,如果 是,则将当前逻辑驱动器的盘符数据的下一个未处理的逻辑驱动器的盘符数据作为当前逻 辑驱动器的盘符数据,返回步骤a2,否则获取到保存的所有丢失逻辑驱动器的盘符数据,执 行步骤S3。
4. 根据权利要求3所述的方法,其特征在于,所述步骤a2具体为: 步骤bl :从所述可见逻辑驱动器的盘符数据中获取第一个未处理的可见逻辑驱动器 的盘符数据,作为当前可见逻辑驱动器的盘符数据; 步骤b2 :判断当前可见逻辑驱动器的盘符数据与当前逻辑驱动器的盘符数据是否相 同,如果是,则执行步骤b3,否则将当前逻辑驱动器的盘符作为丢失逻辑驱动器的盘符保 存,执行步骤e3 ; 步骤b3 :判断所述可见逻辑驱动器的盘符数据中是否还有未处理的盘符数据,如果 是,则将当前可见逻辑驱动器的盘符数据的下一个未处理的可见逻辑驱动器的盘符数据作 为当前可见逻辑驱动器的盘符数据,返回步骤b2,否则执行步骤a3。
5. 根据权利要求3所述的方法,其特征在于,所述步骤a2具体为: 步骤cl :从所述可见逻辑驱动器的盘符数据中获取标识为未处理状态的可见逻辑驱 动器的盘符数据,作为当前可见逻辑驱动器的盘符数据; 步骤c2 :判断当前可见逻辑驱动器的盘符数据与当前逻辑驱动器的盘符数据是否相 同,如果是,则执行步骤c3,否则将当前逻辑驱动器的盘符作为丢失逻辑驱动器的盘符保 存,执行步骤c3 ; 步骤c3 :将可见逻辑驱动器的盘符数据的标识置为已处理状态,当前判断所述可见逻 辑驱动器的盘符数据中是否还有标识为未处理状态的盘符数据,如果是,则返回步骤cl,否 则执行步骤a3。
6. 根据权利要求1所述的方法,其特征在于,所述步骤S2,具体为: 步骤dl :从所述所有逻辑驱动器的盘符数据中获取标识为未处理状态的逻辑驱动器 的盘符数据,作为当前逻辑驱动器的盘符数据; 步骤d2 :判断当前逻辑驱动器的盘符数据是否存在于所述可见逻辑驱动器的盘符数 据中,如果是,则执行步骤d3,否则将当前逻辑驱动器的盘符数据作为丢失逻辑驱动器的盘 符数据并保存,执行步骤d3; 步骤d3 :将当前逻辑驱动器的盘符数据对应的标识置为已处理状态,判断所述所有逻 辑驱动器的盘符数据中是否还有标识为未处理的盘符数据,如果是,则返回步骤dl,否则获 取到保存的所有丢失逻辑驱动器的盘符数据,执行步骤S3。
7. 根据权利要求6所述的方法,其特征在于,所述步骤d2具体为: 步骤el :从所述可见逻辑驱动器的盘符数据中获取第一个未执行恢复操作的可见逻 辑驱动器的盘符数据,作为当前可见逻辑驱动器的盘符数据; 步骤e2 :判断当前可见逻辑驱动器的盘符数据与当前逻辑驱动器的盘符数据是否相 同,如果是,则执行步骤e3,否则将当前逻辑驱动器的盘符作为丢失逻辑驱动器的盘符保 存,执行步骤e3 ; 步骤e3 :判断所述可见逻辑驱动器的盘符数据中是否还有未执行恢复操作的盘符数 据,如果是,则将当前可见逻辑驱动器的盘符数据的下一个未执行恢复操作的可见逻辑驱 动器的盘符数据作为当前可见逻辑驱动器的盘符数据,返回步骤e2,否则执行步骤d3。
8. 根据权利要求6所述的方法,其特征在于,所述步骤d2具体为: 步骤Π :从所述可见逻辑驱动器的盘符数据中获取标识为未处理状态的可见逻辑驱 动器的盘符数据,作为当前可见逻辑驱动器的盘符数据; 步骤f2 :判断当前可见逻辑驱动器的盘符数据与当前逻辑驱动器的盘符数据是否相 同,如果是,则执行步骤f3,否则将当前逻辑驱动器的盘符作为丢失逻辑驱动器的盘符保 存,执行步骤f3 ; 步骤f3 :将当前可见逻辑驱动器的盘符数据对应的标识置为已处理状态,判断所述可 见逻辑驱动器的盘符数据中是否还有标识为未处理状态的盘符数据,如果是,则返回步骤 Π ,否则执行步骤d3。
9. 根据权利要求1所述的方法,其特征在于, 所述步骤T1之前包括: 步骤g :从所有丢失逻辑驱动器的盘符中选择一个未执行恢复操作的丢失逻辑驱动器 的盘符; 所述步骤T3之后包括: 步骤h :判断是否还有未执行恢复操作的丢失逻辑驱动器的盘符,如果是,则返回步骤 g,否则结束。
10. 根据权利要求9所述的方法,其特征在于,所述步骤T1,还包括:判断从系统注册表 中是否能够获取到丢失逻辑驱动器的GUID值,如果是,则执行步骤T2,否则执行步骤h。
11. 根据权利要求9所述的方法,其特征在于,所述步骤T3,还包括: 步骤Π :判断是否成功恢复所述丢失逻辑驱动器的盘符,如果是,则执行步骤g,否则 执行步骤i2 ; 步骤i2 :判断所述丢失逻辑驱动器的盘符是否为预设最大盘符,如果是,则执行步骤 a2,否则更新所述丢失逻辑驱动器的盘符,返回步骤T3。
12. 根据权利要求1所述的方法,其特征在于,所述步骤S1还包括:从系统中获取可见 逻辑驱动器的盘符数量; 所述从系统中获取可见逻辑驱动器的盘符数量,具体为: 步骤kl :将可见逻辑驱动器的盘符数量置为初始值,调用获取可见逻辑驱动器盘符数 量函数,得到第一函数返回值; 步骤k2 :获取所述第一函数返回值中包含的预设值的个数,将包含的预设值的个数作 为可见逻辑驱动器的盘符数量。
13. 根据权利要求12所述的方法,其特征在于,所述步骤S1中,所述从系统中获取可见 逻辑驱动器的盘符和盘符数据,具体为: 步骤ml :获取所述可见逻辑驱动器的盘符数量; 步骤m2 :调用获取可见逻辑驱动器盘符数据的函数,得到第二函数返回值,将所述第 二函数返回值作为可见逻辑驱动器中的盘符数据,并保存; 步骤m3 :更新所述可见逻辑驱动器的盘符数量,判断所述可见逻辑驱动器的数量是否 大于〇,如果是,则执行步骤m2,否则获取到保存的可见逻辑驱动器中的盘符数据。
14. 根据权利要求1所述的方法,其特征在于,所述步骤S1还包括:从系统注册表中获 取所有逻辑驱动器的盘符数量; 所述从系统注册表中获取所有逻辑驱动器的盘符和盘符数据,具体为: 步骤nl :打开系统注册表中的预设注册表项; 步骤n2 :从所述预设注册表项中获取一个未处理的注册表项名称,作为当前注册表项 名称; 步骤n3 :判断当前注册表项名称是否包含第一预设字符串,如果是,则执行步骤n4,否 则执行步骤n6 ; 步骤n4:获取当前注册表项名称中除所述第一预设字符串外的其余字符串数据,作为 逻辑驱动器的盘符,并保存; 步骤n5 :更新所有逻辑驱动器的盘符数量,执行步骤n6 ; 步骤n6 :判断当前注册表项名称是否为所述预设注册表项的最后一项名称,如果是, 则获取保存的所有逻辑驱动器的盘符,否则将当前注册表项名称的下一注册表项名称作为 当前注册表项名称,返回步骤π3。
15. 根据权利要求14所述的方法,其特征在于,所述步骤S1中,所述从系统注册表中获 取所有逻辑驱动器的盘符数据,具体为: 步骤pl :获取所述所有逻辑驱动器的盘符数量; 步骤p2 :调用获取逻辑驱动器盘符数据的函数,得到第三函数返回值,将所述第三函 数返回值作为所有逻辑驱动器的盘符数据并保存; 步骤P3 :更新所述所有逻辑驱动器的盘符数量,判断更新后的所有逻辑驱动器的盘符 数量是否大于〇,如果是,则执行步骤P2,否则获取到保存的所有逻辑驱动器的盘符数据。
16. 根据权利要求14所述的方法,其特征在于,所述步骤n2和所述步骤n3之间还包 括:获取当前注册表项名称对应的键值,判断对应的键值是否以预设字符组合开头,如果 是,则执行步骤n6,否则执行步骤n3。
17. 根据权利要求14所述的方法,其特征在于,所述步骤n4,还包括:获取当前注册表 项名称对应的盘符类型、键值和键值长度,并保存。
18. 根据权利要求17所述的方法,其特征在于,所述步骤T1中,所述获取所述丢失逻辑 驱动器的⑶ID值,具体为: 步骤ql :打开所述系统注册表中的预设注册表项; 步骤q2 :从所述预设注册表项中获取未处理的一个注册表项名称,作为当前注册表项 名称; 步骤q3 :判断当前注册表项名称中是否包含第二预设字符串,如果是,则执行步骤q4, 否则执行步骤q6 ; 步骤q4 :获取当前注册表项名称中除第二预设字符串外的其余字符串数据和盘符类 型,将该字符串数据作为GUID值; 步骤q5 :获取当前注册表项名称对应的盘符类型、键值和键值长度; 步骤q6 :判断预设注册表项中是否还有未处理的注册表项名称,如果是,则执行步骤 q2,否则执行步骤q7; 步骤q7 :关闭系统注册表,并获取保存的GUID值、盘符类型、键值和键值长度; 步骤q8 :判断⑶ID值的数量是否大于0,如果是,则将第一个⑶ID值作为当前⑶ID值, 执行步骤q8,否则结束; 步骤q9 :判断当前GUID值对应的键值长度与当前丢失逻辑驱动器的盘符对应的键值 长度是否相同,如果是,则执行步骤ql〇,否则执行步骤qll ; 步骤ql〇 :判断当前GUID值对应的键值与所述当前逻辑驱动器的盘符对应的键值是否 相等,如果是,则将当前GUID值作为当前丢失逻辑驱动器的GUID值并保存,执行步骤S4,否 则执行步骤qll ; 步骤qll :判断是否还有未处理的⑶ID值,如果是,则将当前⑶ID值的下一⑶ID值作 为当前GUID值,返回执行步骤q9,否则获取到丢失逻辑驱动器的GUID值。
19. 根据权利要求18所述的方法,其特征在于,所述步骤q2和所述步骤q3之间还包 括:获取当前注册表项名称对应的键值,判断对应的键值是否以预设字符组合开头,如果 是,则执行步骤q6,否则执行步骤q3。
【文档编号】G06F11/07GK104281498SQ201410477986
【公开日】2015年1月14日 申请日期:2014年9月18日 优先权日:2014年9月18日
【发明者】陆舟, 于华章 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1