【问题标题】:How to tell which disk Windows Used to Boot如何判断 Windows 用于引导哪个磁盘
【发布时间】:2021-06-15 15:16:37
【问题描述】:

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

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

特里

附言仅仅读取硬盘的第一个扇区并不令人陶醉。在我的开发盒上,我有两个硬盘,当我查看其中一个硬盘上前几个扇区的内容时,我有一个标准的样板 MBR。

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

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

【问题讨论】:

  • 在命令行中,即运行,cmd回车,输入systeminfo return。请花一点时间来编译列表和更详细的答案。

标签: windows mbr


【解决方案1】:
  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

【讨论】:

  • 如果您没有按类别列出控制面板图标,请跳过第 2 步并直接进入管理工具。没有系统和安全选项,“系统”选项不是您想要的。
【解决方案2】:

除非 C: 不是启动 windows 的驱动器。
解析 %SystemRoot% 变量,它包含 windows 文件夹的位置(即 c:\windows)。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

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

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

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

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

      【讨论】:

        【解决方案5】:

        仅安装了 Vista 的机器上没有 boot.ini。

        您想如何识别驱动器/分区:通过它映射到的 Windows 驱动器号(例如 c:\、d:)或通过其硬件签名方式(哪个总线等)。

        对于简单的案例,请查看GetSystemDirectory

        【讨论】:

        【解决方案6】:

        试试 HKEY_LOCAL_MACHINE\SYSTEM\Setup\SystemPartition

        【讨论】:

        • 您确定密钥在 uefi 系统上指示该值吗?在我的,它指向的是 winre 分区的 harddiskvolume2。
        【解决方案7】:

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

        dispart 
        list disk 
        select disk 0 
        detail disk
        

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

        【讨论】:

          【解决方案8】:

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

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

          【讨论】:

          • 应该是/v 而不是\v
          【解决方案9】:

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

          【讨论】:

            【解决方案10】:

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

            【讨论】:

              猜你喜欢
              • 2014-12-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-03-19
              • 2020-11-18
              • 2017-03-09
              相关资源
              最近更新 更多