liuzhaoyzz 发表于 2021-1-7 12:43:05

本帖最后由 liuzhaoyzz 于 2021-1-7 12:47 编辑

CodeHz 发表于 2021-1-7 12:12
你先试试用winobj (sys internals 套件里的那个) 管理员权限打开后能不能在我截图的位置看到正确的结果 ...不知道是哪个,盘符怎么对应的

CodeHz 发表于 2021-1-7 13:17:57

liuzhaoyzz 发表于 2021-1-7 12:43
不知道是哪个,盘符怎么对应的

又深入研究了一下这几个路径,发现它实际上是系统盘所在路径,而非引导分区。。。

CodeHz 发表于 2021-1-7 13:33:38

继续研究了一下,似乎就是\Device\SystemPartition这个路径对应引导分区,至少在我这里是这样的。。。(关于如何定位分区,你可以可以这样手动找

plusv 发表于 2021-1-7 13:44:45

CodeHz 发表于 2021-1-7 13:33
继续研究了一下,似乎就是\Device\SystemPartition这个路径对应引导分区,至少在我这里是这样的。。。(关 ...

Windows 7 X64 完整版,
没有这些符号链接.

CodeHz 发表于 2021-1-7 13:46:55

plusv 发表于 2021-1-7 13:44
Windows 7 X64 完整版,
没有这些符号链接.
在GLOBAL??下找找看有没有对应的(直接按符号链接排序,找找有没有对应引导分区且有显著标志的

plusv 发表于 2021-1-7 13:47:37

WuYou 从昨晚到现在都很卡,
网速只有 0.000-0.030 Mbps,
传个 78 KB 小图都很久,
快晕了.

CodeHz 发表于 2021-1-7 13:48:11

plusv 发表于 2021-1-7 13:47
WuYou 从昨晚到现在都很卡,
网速只有 0.000-0.030 Mbps,
传个 78 KB 小图都很久,


我这每次发东西都得刷新才能发出来(也不知道哪里的问题)

plusv 发表于 2021-1-7 13:50:50

CodeHz 发表于 2021-1-7 13:46
在GLOBAL??下找找看有没有对应的(直接按符号链接排序,找找有没有对应引导分区且有显著标志的

也是没有.

WuYou 从昨晚到现在都很卡,
网速只有 0.000-0.030 Mbps,
不传图了

CodeHz 发表于 2021-1-7 13:51:08

我这边GLOBAL??里磁盘相关的有这些项目

plusv 发表于 2021-1-7 14:00:33

CodeHz 发表于 2021-1-7 13:51
我这边GLOBAL??里磁盘相关的有这些项目

也是没有.


liuzhaoyzz 发表于 2021-1-7 19:17:34

CodeHz 发表于 2021-1-7 13:33
继续研究了一下,似乎就是\Device\SystemPartition这个路径对应引导分区,至少在我这里是这样的。。。(关 ...

WIN10里面,\Device\SystemPartition这个路径我都没有找到。
GLOBAL??下也没看到啊?

CodeHz 发表于 2021-1-7 19:36:36

liuzhaoyzz 发表于 2021-1-7 19:17
WIN10里面,\Device\SystemPartition这个路径我都没有找到。
GLOBAL??下也没看到啊?

难道是新版本特性吗,,我这构建号是21286(
要不你试试按符号链接排序(就是第三列顶部点一下那个),然后找你的引导分区,看看有没有什么特殊的名字指向它

liuzhaoyzz 发表于 2021-1-7 20:14:48

我看了,好像没找到有价值的线索

CodeHz 发表于 2021-1-7 20:28:43

liuzhaoyzz 发表于 2021-1-7 08:41
那台电脑在家里。我截图之后出来了,晚点看看。

这么一看似乎就是
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FirmwareBootDevice

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SystemBootDevice
风别为引导盘和启动盘了(

nttwqz 发表于 2021-1-7 21:21:14

重写,不再基于dpinfo,UAC开启时需要重启explorer.exe资源管理器中才会显示,管理员命令行操作请忽略。

CodeHz 发表于 2021-1-7 23:24:36


不管有用没用,先整一个上来试试(源码比较乱,确认有用再修改一下)




(需要先过UAC,我没做检查,没权限会崩溃)

liuzhaoyzz 发表于 2021-1-8 08:25:21

nttwqz 发表于 2021-1-7 21:21
重写,不再基于dpinfo,UAC开启时需要重启explorer.exe资源管理器中才会显示,管理员命令行操作请忽略。

等下我测试下,谢谢!

nttwqz 发表于 2021-1-8 11:32:34

liuzhaoyzz 发表于 2021-1-8 08:25
等下我测试下,谢谢!

又完善了一下,加入列表显示,无选中功能,找到时背景绿色,否则红色
https://cowtransfer.com/s/afbf13a2b42541

liuzhaoyzz 发表于 2021-1-8 11:53:36

nttwqz 发表于 2021-1-8 11:32
又完善了一下,加入列表显示,无选中功能,找到时背景绿色,否则红色
https://cowtransfer.com/s/afbf13 ...

好的,晚点试试。

liuzhaoyzz 发表于 2021-1-8 12:57:17

本帖最后由 liuzhaoyzz 于 2021-1-8 16:04 编辑

CodeHz 发表于 2021-1-7 23:24
不管有用没用,先整一个上来试试(源码比较乱,确认有用再修改一下)

测试环境都是WIN8 WIN10,因为WIN7不支持MBR+GPT混合分区启动,未测试。
76楼图1环境: 从ESP分区UEFI启动vhd
firmware 32位的运行出错。
64位的结果好像是对的。

好像是对的。





测试环境76楼图2:从MBR-激活的FAT32分区UEFI启动
firmware 32位的运行出错。
64位的结果好像是对的。





[+] key: FirmwareBootDevice
    [-] arcname: multi(0)disk(0)rdisk(0)partition(1)
    [-] path1: \Device\Harddisk2\Partition1
    [-] path2: \Device\HarddiskVolume1
    [+] mountpoints
       [-] mount point: \??\Volume{ffcb0ea0-0000-0000-0000-200000000000}

BIOS-激活的FAT32分区启动,64位结果应该也是对的。
J:\bak\2下载的文件\判断引导分区\codeHZ>firmware64.exe
[+] key: FirmwareBootDevice
    [-] arcname: multi(0)disk(0)rdisk(0)partition(1)
    [-] path1: \Device\Harddisk2\Partition1
    [-] path2: \Device\HarddiskVolume1
    [+] mountpoints
       [-] mount point: \??\Volume{ffcb0ea0-0000-0000-0000-200000000000}




    [-] path1: \Device\Harddisk2\Partition1,磁盘管理里面有"系统"两个字,是启动分区。












liuzhaoyzz 发表于 2021-1-8 13:03:10

本帖最后由 liuzhaoyzz 于 2021-1-8 13:10 编辑

nttwqz 发表于 2021-1-8 11:32
又完善了一下,加入列表显示,无选中功能,找到时背景绿色,否则红色
https://cowtransfer.com/s/afbf13 ...
76楼图1环境,从ESP分区UEFI启动vhd,测试结果正确。ESP挂载正常。



76楼图2环境,从MBR-激活的FAT32分区UEFI启动,测试结果正确,但是第一次运行有个出错提示。

再次运行正常。
有时候有这个错误。比如从浏览器的下载窗口直接打开bat:








nttwqz 发表于 2021-1-8 14:37:12

liuzhaoyzz 发表于 2021-1-8 13:03
76楼图1环境,从ESP分区UEFI启动vhd,测试结果正确。ESP挂载正常。




错误提示不知道什么意思,看起来结果正常显示,我可以将错误屏蔽bcdedit错误不得而知,手动试试能不能显示菜单。

CodeHz 发表于 2021-1-8 15:25:56

liuzhaoyzz 发表于 2021-1-8 12:57
测试环境都是WIN8 WIN10,因为WIN7不支持MBR+GPT混合分区启动,未测试。
76楼图1环境: 从ESP分区UEFI启动 ...

32位没做过测试就发出来了,看起来是写炸了,一会修一下吧(

CodeHz 发表于 2021-1-8 15:35:19

liuzhaoyzz 发表于 2021-1-8 12:57
测试环境都是WIN8 WIN10,因为WIN7不支持MBR+GPT混合分区启动,未测试。
76楼图1环境: 从ESP分区UEFI启动 ...

另外是不是需要直接挂载出来呢,这样的话我这里可以省很多计算挂载点的操作,研究了一下,引导分区多半是没默认挂载的)

CodeHz 发表于 2021-1-8 15:57:15

本帖最后由 CodeHz 于 2021-1-8 16:04 编辑

(然后一顿研究之后我发现一个最最最简单的方法。。。
直接 mountvol X: /S
然后在管理员会话里X盘就是当前的EFI系统分区了。。。(非PE下的话,只有经过UAC的进程能看到那个分区,而explorer是自动弃权的,所以explorer是看不到那个分区的)


PS:经过一顿研究,普通用户即使通过一些手段打开了目录,也没法访问,权限不够而且没法修改(((

liuzhaoyzz 发表于 2021-1-8 16:07:17

CodeHz 发表于 2021-1-8 15:35
另外是不是需要直接挂载出来呢,这样的话我这里可以省很多计算挂载点的操作,研究了一下,引导分区多半是 ...

      如果能够挂载出来分配个盘符最好,最好还提供个卸载盘符的参数,如果没有提供卸载盘符的参数,也没有什么。

liuzhaoyzz 发表于 2021-1-8 16:11:44

本帖最后由 liuzhaoyzz 于 2021-1-8 16:15 编辑

CodeHz 发表于 2021-1-8 15:57
(然后一顿研究之后我发现一个最最最简单的方法。。。
直接 mountvol X: /S
然后在管理员会话里X盘就是当 ...
      mountvol X: /S这个操作肯定是不行的,似乎只能适用于一个硬盘一个ESP分区的情况。不具有适用性。这个命令真的很渣!
guyue2011写的工具挺好用的:挂载GPT硬盘的ESP分区工具--FindESP2.0 - PE讨论区 - 无忧启动论坛 - Powered by Discuz! http://bbs.wuyou.net/forum.php?mod=viewthread&tid=374167
findESP -mount
findESP -unmount
可以挂载所有本地硬盘的ESP分区,也可以卸载本地硬盘所有的ESP分区。(不支持优盘移动硬盘,这个我没有需求)

另外,盘符写入权限的问题,感觉比较麻烦。如果以内置的超级管理员身份登陆好像ESP写入没问题,如果以administrators组的成员访问,或者更低权限的用户访问可能就有问题。这个似乎不在讨论之列,能够实现找到并挂载这个引导分区就行了,剩下的事情让用户自己搞定吧。

liuzhaoyzz 发表于 2021-1-8 16:13:48

nttwqz 发表于 2021-1-8 14:37
错误提示不知道什么意思,看起来结果正常显示,我可以将错误屏蔽bcdedit错误不得而知,手动试试能不能显 ...

从浏览器的下载窗口直接打开bat,可能是因为32位浏览器或者文件管理器,调用了bcdedit是32位的,无法调用64位的导致出错。

liuzhaoyzz 发表于 2021-1-8 16:20:27

本帖最后由 liuzhaoyzz 于 2021-1-9 09:30 编辑

你看看上面mountvol的方法win7是否有效(这个是最方便的方法了)

mountvol的方法,适用于XP WIN7 8 10好像。问题是mountvol X: /S这样的肯定不适合的。
mountvol z: \\?\Volume{5a006011-0000-0000-0000-100000000000}\
这样子的命令是具有较好的通用性的,但是需要知道分区的UUID,这样子的命令不但可以挂载ESP盘符,FAT32/NTFS盘符挂载都没问题的。如果你能用windows API在程序内部实现更好,如果不能实现或实现起来费事,就用windows的mountvol实现也行。

mountvol X: /S这个命令比较渣,建议放弃。

liuzhaoyzz 发表于 2021-1-8 16:24:45

CodeHz 发表于 2021-1-8 15:25
32位没做过测试就发出来了,看起来是写炸了,一会修一下吧(

32位的程序具有更好的通用性,希望能够在xp下面运行,通杀xp WIN7 8 10,不然的话,批处理调用,还要判断系统版本,稍嫌麻烦。      
页: 1 2 3 [4] 5 6 7 8 9 10 11 12 13
查看完整版本: 请问下有没有办法用批处理或者命令行小程序确定系统引导分区?