11

我需要找到一种方法来以编程方式确定 Windows 使用哪个磁盘驱动器来启动。换句话说,我需要一种来自 Windows 的方法来确定 BIOS 使用哪个驱动器来引导整个系统。

Windows 是否公开一个接口来发现这一点?Windows API 有多大,我希望里面有一些东西可以解决问题。

特里

ps 仅仅读取硬盘的第一个扇区并没有任何乐趣。在我的开发盒上,我有两个硬盘,当我查看其中一个硬盘上前几个扇区的内容时,我有一个标准的样板 MBR。

编辑以澄清一些事情。我想识别设备的方式是使用一个字符串来识别物理磁盘驱动器(而不是逻辑磁盘驱动器)。物理磁盘驱动器的格式为“\\.\PHYSICALDRIVEx”,其中 x 是一个数字。另一方面,逻辑驱动器由格式为“\\.\x”的字符串标识,其中 x 是驱动器号。

编辑讨论一些被抛出的想法。知道 Windows 用来引导哪个逻辑卷在这里对我没有帮助。这就是原因。假设 C: 正在使用镜像 RAID 设置。现在,这意味着我们至少有两个物理驱动器。现在,我得到了从逻辑驱动器到物理驱动器的映射,我发现该卷使用了两个物理驱动器。Windows 使用哪一个来启动?当然,这是假设 Windows 用于引导的物理驱动器与包含 MBR 的物理驱动器相同。

4

10 回答 10

13
  1. 进入Control Panel
  2. System and Security
  3. Administrative Tools
  4. 启动System Configuration工具

如果您安装了多个 Windows 副本,则启动时使用的副本将被命名为:

Windows 7 (F:\Windows)
Windows 7 (C:\Windows) : Current OS, Default OS
于 2013-08-25T01:31:51.980 回答
5

Unless C: is not the drive that windows booted from.
Parse the %SystemRoot% variable, it contains the location of the windows folder (i.e. c:\windows).

于 2008-09-02T19:18:39.763 回答
4

您可以使用 WMI 来解决这个问题。Win32_BootConfiguration类将告诉您 Windows 启动的逻辑驱动器和物理设备。具体来说,Caption 属性会告诉您正在从哪个设备启动。

例如,在 powershell 中,只需键入gwmi Win32_BootConfiguration即可获得答案。

于 2008-09-02T21:10:17.577 回答
3

这取决于您对 Windows 用于引导的磁盘驱动器的定义。我可以在标准 BIOS 系统上想到 3 个不同的答案(谁知道 EFI 系统的作用):

  1. 包含活动 MBR 的驱动器
  2. 活动分区,带有 NTLDR(系统分区)
  3. 上面有 Windows 的分区(引导分区)

2 和 3 应该很容易找到 - 我不太确定 1。虽然您可以读取原始磁盘以找到 MBR,但这并不意味着这一次甚至下一次它是 BIOS 引导设备(您可能有多个带有 MBR 的磁盘)。

您甚至无法确定 PC 是从硬盘驱动器启动的——完全有可能从软盘启动 Windows。在这种情况下,从技术上讲,1 和 2 都是软盘,但 3 仍然是 C:\Windows。

您可能需要更具体地说明您的要求或目标。

于 2008-09-02T21:45:04.933 回答
2

There is no boot.ini on a machine with just Vista installed.

How do you want to identify the drive/partition: by the windows drive letter it is mapped to (eg. c:\, d:) or by how its hardware signature (which bus, etc).

For the simple case check out GetSystemDirectory

于 2008-09-02T19:20:49.977 回答
1

Try HKEY_LOCAL_MACHINE\SYSTEM\Setup\SystemPartition

于 2008-09-02T19:25:41.430 回答
1

您键入diskpart,列出磁盘并检查启动磁盘。
前任:

dispart 
list disk 
select disk 0 
detail disk

带有 Boot 卷的磁盘是安装了 windows 的磁盘:

在此处输入图像描述

于 2020-10-16T21:14:04.323 回答
0

您可以尝试使用简单的命令行。bcdedit是您所需要的,只需以管理员身份运行 cmd 并键入bcdeditor bcdedit \v,这在 XP 上不起作用,但希望这不是问题。

无论如何,对于 XP,您可以查看boot.ini文件。

于 2015-12-15T15:24:52.123 回答
0

一种更简单的方法 是在开始菜单中搜索下载,然后单击搜索结果中的下载以查看它将带您到哪里驱动器将在资源管理器中突出显示。

于 2021-02-01T05:14:21.513 回答
0

在 Windows 10 上。打开“计算机管理”在“页面左上角”列表中查找“存储”选择“磁盘管理”在显示磁盘列表和分区的页面部分中,找到将分区分配为驱动器的磁盘C: 在包含 C: 分区的磁盘上使用鼠标右键选择包含磁盘号、驱动器类型和大小 (GB) 的方形部分。当菜单打开时选择属性。将打开一个窗口,显示所使用的驱动器硬件。

于 2021-06-15T07:16:37.473 回答