厉害 支持 |
要是能列出重复项,供用户指定删除就好了,因为有时候重装系统会出现两个菜单项指向同一个分区。 |
本帖最后由 dos时代菜鸟 于 2018-3-18 22:41 编辑 以修正 那个 括号 的问题。 不是 那个地方的 括号,而是上面 uefi 判断的时候 多了个 括号。呵呵, |
) ) exit /b :win_x 这里是不是多了一个括号? |
bcd检测在我这里都ok了。 我是bios环境。 |
本帖最后由 dos时代菜鸟 于 2018-3-17 23:58 编辑 更新了 0.3 支持 locate bcd 位置还是用户自己输入吧 这样的东西,还是 不要太自动,不然 你的 专业知识 怎么显现? 包括 win 版本 的显示,我是不打算纠结在这上面了。 目前我能做到的对 bcd 内容的 检测 ,差不多 就样子了,过段时间,在研究,或许有所提升。 先这样吧。慢慢来。 |
参与人数 1 | 无忧币 +5 | 收起 理由 |
---|---|---|
| + 5 | 好吧 |
本帖最后由 freesoft00 于 2018-3-17 23:51 编辑 又看了一下,检测这里也不好判断,例如有隐藏分区的情况 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist] "\\REGISTRY\\MACHINE\\BCD00000000"="\\Device\\HarddiskVolume1\\Boot\\BCD" 我的系统是vhd系统,vhd文件存放在f盘,分区最前面是百兆的隐藏分区,里面是系统启动文件,bcd就在其中。vhd系统启动后显示盘符为c 看注册表显示的是 \\Device\\HarddiskVolume1\\Boot\\BCD 实体磁盘系统的话就一般对应C盘,但是这个是虚拟磁盘,真实的引导文件是前面的百兆隐藏文件中的bcd。 所以自动检测bcd文件位置的方案就否决了吧。 |
本帖最后由 freesoft00 于 2018-3-17 23:05 编辑 BCD文件位置: 在注册表路径[HKEY_LOCAL_MACHINE\BCD00000000] 如果有这个注册表项,说明系统已经挂在了bcd文件。bcd文件的路径在下面的注册表键值可以得到 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist] "\\REGISTRY\\MACHINE\\BCD00000000"="\\Device\\HarddiskVolume1\\Boot\\BCD" 如果运行环境是winpe,可以让用户手动输入bcd位置,这样需要批处理做一个运行环境判断。如果不是winpe,并且在注册表中可以找到bcd位置就不需要用户输入了。 另外,我测试使用过你的检测脚本后[HKEY_LOCAL_MACHINE\BCD00000000]这个bcd挂载会消失。 测试环境是实体系统+vhd系统,使用注册表手动挂载了vhd系统中的software注册表文件,然后再运行你的检测脚本,检测完成bcd后,发现bcd挂载点被卸载掉了。 有下面的键值一般就是winpe启动: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control] "SystemStartOptions"="MININT" |
win10,注册表ProductName显示名称是Windows 10 Enterprise G 没有BuildLabEx键。 批处理检测显示的是WINDOWS W32i-10.0 如果不想使用检测是否存在C:\Windows\SysWOW64\cmd.exe文件来判读是否是32位还是64位系统。可以检测下面的注册表键值: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion] "CommonFilesDir"="C:\\Program Files\\Common Files" "CommonFilesDir (x86)"="C:\\Program Files (x86)\\Common Files" "CommonW6432Dir"="C:\\Program Files\\Common Files" "ProgramFilesDir"="C:\\Program Files" "ProgramFilesDir (x86)"="C:\\Program Files (x86)" "ProgramW6432Dir"="C:\\Program Files" 加粗的几个是64位特有的,没有就是32位系统。 这样就不需要filever文件了。 |
本帖最后由 dos时代菜鸟 于 2018-3-17 21:10 编辑 freesoft00 发表于 2018-3-17 20:29 刚改进了一下 [boot] 的 locate 的,还要再想一想。要用到 那个 卷分区列表了。 |
dos时代菜鸟 发表于 2018-3-17 19:59 vhd=[locate] ----------------- [locate]的情况,应该是搜索vhd文件,搜索和bcd在同磁盘的vhd文件。 如果bcd是磁盘0的,那么遍历磁盘0的分区,例如有这个 H:\vhd\test.vhd(x) 文件,那么就ok 另外检测脚本没有卸载装载过的隐藏分区 |
本帖最后由 dos时代菜鸟 于 2018-3-17 20:08 编辑 因为 检测 内容有限,如果这些有限的条件 都不满足而 界定为 Error ,那么,这条 选项 可以删掉了。 对于 vhd=[locate] 的可能会判断错误 |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.