我需要找到一种方法来以编程方式确定Windows用于引导的磁盘驱动器。换句话说,我需要一种来自Windows的方法来确定BIOS用于启动整个系统的驱动器。
Windows是否公开了一个界面来发现这个?随着Windows API的大小,我希望那里有一些可以解决问题的东西。
特里
P.S。只是读取硬盘的第一个扇区并不是在陶醉任何东西。在我的开发盒上我有两个硬盘,当我查看任一硬盘上前几个扇区的内容时,我有一个标准的锅炉板MBR。
编辑以澄清一些事情。 我想识别设备的方式是使用字符串来识别物理磁盘驱动器(而不是逻辑磁盘驱动器)。物理磁盘驱动器的格式为“\\。\ PHYSICALDRIVEx”,其中x是数字。另一方面,逻辑驱动器由表单字符串“\\。\ x”标识,其中x是驱动器号。
编辑以讨论被抛出的一些想法。 知道Windows用来启动哪个逻辑卷对我没有帮助。这就是原因。假设C:正在使用镜像RAID设置。现在,这意味着我们至少有两个物理驱动器。现在,我获得了从逻辑驱动器到物理驱动器的映射,我发现该卷使用了两个物理驱动器。 Windows使用哪一个启动?当然,这假设用于引导的Windows物理驱动器与包含MBR的物理驱动器相同。
答案 0 :(得分:8)
Control Panel
System and Security
Administrative Tools
System Configuration
工具如果您安装了多个Windows副本,则引导您的Windows副本将被命名为:
Windows 7 (F:\Windows)
Windows 7 (C:\Windows) : Current OS, Default OS
答案 1 :(得分:5)
除非C:不是Windows启动的驱动器。
解析%SystemRoot%变量,它包含windows文件夹的位置(即c:\ windows)。
答案 2 :(得分:4)
您可以使用WMI来解决这个问题。 Win32_BootConfiguration类将告诉您逻辑驱动器和Windows引导的物理设备。具体来说,Caption属性将告诉您正在启动的设备。
例如,在powershell中,只需输入 gwmi Win32_BootConfiguration 即可获得答案。
答案 3 :(得分:3)
这取决于您定义Windows用于引导的磁盘驱动器。我可以在标准BIOS系统上想到3个不同的答案(谁知道EFI系统的作用):
2和3应该很容易找到 - 我不太确定1.尽管你可以通过原始磁盘读取来找到MBR,但这并不意味着它是这次或甚至下次的BIOS启动设备(你可能有多个带MBR的磁盘。)
你甚至无法确定PC是从硬盘驱动器启动的 - 完全有可能从软盘启动Windows。在这种情况下,1和2在技术上都是软盘,但3仍然是C:\ Windows。
您可能需要在您的要求或目标中更具体一些。
答案 4 :(得分:2)
安装了Vista的计算机上没有boot.ini。
你想如何识别驱动器/分区:通过它映射到的Windows驱动器号(例如c:\,d :)或者它的硬件签名(哪个总线等)。
对于简单的案例,请查看GetSystemDirectory
答案 5 :(得分:1)
尝试HKEY_LOCAL_MACHINE \ SYSTEM \ Setup \ SystemPartition
答案 6 :(得分:0)
您可以尝试使用简单的命令行。 bcdedit是您需要的,只需以管理员身份运行cmd并输入bcdedit
或bcdedit \v
,这不适用于XP,但希望它不是问题。
无论如何,对于XP,您可以查看boot.ini
文件。
答案 7 :(得分:0)
答案 8 :(得分:0)
更简单的方法 在开始菜单中搜索下载,然后点击搜索结果中的下载以查看它将带您到哪里,驱动器将在资源管理器中突出显示。
答案 9 :(得分:0)
在 Windows 10 上。 打开“计算机管理” 在列表“页面左上角”中查找“存储” 选择“磁盘管理” 在显示磁盘列表和分区的页面部分找到将分区分配为驱动器 C 的磁盘: 在包含 C: 分区的磁盘上 使用鼠标右键选择包含磁盘编号、驱动器类型和大小(以 GB 为单位)的 Square 部分。当菜单打开时选择属性。 将打开一个窗口,显示所使用的驱动器硬件。