11

Windows が起動に使用しているディスク ドライブをプログラムで特定する方法を見つける必要があります。つまり、システム全体を起動するために BIOS がどのドライブを使用しているかを Windows から判断する方法が必要です。

Windows はこれを検出するためのインターフェイスを公開していますか? Windows API がどれだけ大きいかということを考えると、うまくいく何かがそこに埋め込まれていることを願っています。

テリー

ps ハードディスクの最初のセクタを読み取るだけでは何も楽しめません。私の開発ボックスには 2 つのハードディスクがあり、いずれかのハードディスクの最初の数セクタの内容を見ると、標準のボイラー プレート MBR があります。

いくつかのことを明確にするために編集します。デバイスを識別する方法は、(論理ディスク ドライブではなく) 物理ディスク ドライブを識別する文字列を使用することです。物理ディスク ドライブの形式は「\\.\PHYSICALDRIVEx」です。x は数字です。一方、論理ドライブは「\\.\x」という形式の文字列で識別されます。x はドライブ文字です。

編集して、捨てられたいくつかのアイデアについて話し合ってください。Windows がブートに使用した論理ボリュームを知っていても、ここでは役に立ちません。これが理由です。C: がミラーリングされた RAID セットアップを使用しているとします。これは、少なくとも 2 つの物理ドライブがあることを意味します。ここで、論理ドライブから物理ドライブへのマッピングを取得し、そのボリュームで使用されている 2 つの物理ドライブがあることを発見しました。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

C: が Windows の起動元のドライブでない場合を除きます。
%SystemRoot% 変数を解析します。これには、windows フォルダーの場所 (つまり、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システム(EFIシステムが何をするかを知っている人)で3つの異なる答えを考えることができます:

  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

Vista だけがインストールされているマシンには boot.ini はありません。

ドライブ/パーティションをどのように識別しますか: マップ先の Windows ドライブ文字 (例: c:\、d:) またはそのハードウェア シグネチャ (どのバスなど) によって。

単純なケースについては、 GetSystemDirectoryをチェックしてください

于 2008-09-02T19:20:49.977 に答える
1

HKEY_LOCAL_MACHINE\SYSTEM\Setup\SystemPartition を試す

于 2008-09-02T19:25:41.430 に答える