How to tell which disk Windows Used to Boot我需要找到一种方法,以编程方式确定Windows正在使用哪个磁盘驱动器进行引导。换句话说,我需要一种从Windows来确定BIOS用于引导整个系统的驱动器的方法。 Windows是否公开接口来发现这一点? Windows API有多大,我希望其中埋藏一些可以解决问题的方法。 特里 ps仅读取硬盘的第一个扇区并不能说明任何问题。在我的开发箱中,我有两个硬盘,当我查看两个硬盘中前两个扇区的内容时,我有一个标准的样板MBR。
编辑以澄清一些事情。
编辑以讨论一些被抛弃的想法。 如果您安装了Windows的多个副本,则将使用以下名称进行启动:
除非C:不是Windows引导的驱动器。 您可以使用WMI来解决此问题。 Win32_BootConfiguration类将告诉您Windows引导所在的逻辑驱动器和物理设备。具体来说,Caption属性将告诉您要从哪个设备启动。 例如,在powershell中,只需键入gwmi Win32_BootConfiguration即可得到答案。 这取决于您对Windows用于引导的磁盘驱动器的定义。我可以在标准BIOS系统(他们知道EFI系统的功能)上想到3个不同的答案: 2和3应该很容易找到-我不太确定1。虽然您可以读取原始磁盘来找到MBR,但这并不意味着它是BIOS引导设备,甚至是下次(您可能有多个)具有MBR的磁盘)。 您甚至无法确定PC是从硬盘驱动器启动的-完全有可能从软盘启动Windows。在这种情况下,1和2从技术上来说都是软盘,尽管3仍然是C:\ Windows。 您可能需要在需求或目标方面更加具体。 仅安装Vista的计算机上没有boot.ini。 您想如何识别驱动器/分区:通过Windows驱动器号映射到该驱动器/分区(例如c:\,d :)或通过其硬件签名方式(使用哪个总线,等等)。 对于简单的情况,请查看GetSystemDirectory 尝试使用HKEY_LOCAL_MACHINE \ SYSTEM \ Setup \ SystemPartition
您键入diskpart,列出磁盘并检查磁盘以进行引导。
具有启动卷的磁盘是装有Windows的磁盘:
您可以尝试使用简单的命令行。 bcdedit是您所需要的,只需以管理员身份运行cmd并键入
无论如何,对于XP,您都可以查看 |