无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 5700|回复: 11
打印 上一主题 下一主题

检测 bcd 菜单的项目 正确性的 脚本草稿

[复制链接]
1#
发表于 2018-3-17 20:29:52 | 显示全部楼层
dos时代菜鸟 发表于 2018-3-17 19:59
因为 检测 内容有限,如果这些有限的条件 都不满足而 界定为 Error ,那么,这条 选项 可以删掉了。

对于 ...

vhd=[locate]
-----------------
[locate]的情况,应该是搜索vhd文件,搜索和bcd在同磁盘的vhd文件。
如果bcd是磁盘0的,那么遍历磁盘0的分区,例如有这个
H:\vhd\test.vhd(x)
文件,那么就ok

另外检测脚本没有卸载装载过的隐藏分区

点评

刚改进了一下 的 locate 的,还要再想一想。  详情 回复 发表于 2018-3-17 21:06
回复

使用道具 举报

2#
发表于 2018-3-17 21:59:30 | 显示全部楼层
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文件了。
回复

使用道具 举报

3#
发表于 2018-3-17 22:44:12 | 显示全部楼层
本帖最后由 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"
回复

使用道具 举报

4#
发表于 2018-3-17 23:20:43 | 显示全部楼层
本帖最后由 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文件位置的方案就否决了吧。

回复

使用道具 举报

5#
发表于 2018-3-18 00:10:58 | 显示全部楼层
bcd检测在我这里都ok了。
我是bios环境。
回复

使用道具 举报

6#
发表于 2018-3-18 00:17:24 | 显示全部楼层
      )
  )
  exit /b  
  :win_x
这里是不是多了一个括号?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-15 07:33

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表