So ermitteln Sie, welche Festplatte Windows zum Booten verwendet

8

Ich muss eine Methode finden, um programmatisch festzustellen, welches Laufwerk Windows zum Booten verwendet. Mit anderen Worten, ich brauche einen Weg von Windows, um festzustellen, welches Laufwerk das BIOS benutzt, um das ganze System zu booten.

Gibt Windows eine Schnittstelle frei, um dies zu entdecken? Mit wie groß das Windows API ist, hoffe ich, dass dort etwas begraben ist, das den Trick tun könnte.

Terry

ps. Nur die ersten Sektoren der Festplatte zu lesen, bringt nichts. Auf meiner Dev-Box habe ich zwei Festplatten, und wenn ich mir die Inhalte der ersten paar Sektoren auf einer der Festplatten anschaue, habe ich einen Standard-Boiler-Platten-MBR.

Bearbeiten, um einige Dinge zu klären. Die Art, wie ich das Gerät identifizieren möchte, besteht aus einer Zeichenfolge, die ein physisches Laufwerk (im Gegensatz zu einem logischen Laufwerk) identifiziert. Physische Laufwerke haben die Form "\\. \ PHYSICALDRIVEx", wobei x für eine Zahl steht. Auf der anderen Seite wird ein logisches Laufwerk durch eine Zeichenkette der Form "\\. \ X" identifiziert, wobei x ein Laufwerksbuchstabe ist.

Bearbeiten, um ein paar der Ideen zu diskutieren, die rausgeworfen wurden. Zu wissen, welches logische Volume Windows zum Booten verwendet, hilft mir hier nicht weiter. Hier ist der Grund. Angenommen, C: verwendet ein gespiegeltes RAID-Setup. Das bedeutet, dass wir mindestens zwei physische Laufwerke haben. Jetzt bekomme ich die Zuordnung von Logical Drive zu Physical Drive und ich stelle fest, dass es zwei physische Laufwerke gibt, die von diesem Volume verwendet werden. Welche hat Windows zum Booten verwendet? Dies setzt natürlich voraus, dass das zum Starten verwendete physische Laufwerk Windows dasselbe physische Laufwerk ist, das den MBR enthält.

    
Terry 02.09.2008, 19:14
quelle

7 Antworten

6
  1. Gehe zu Control Panel
  2. System and Security
  3. Administrative Tools
  4. Starten Sie das Tool System Configuration

Wenn Sie mehrere Windows-Kopien installiert haben, wird die mit der Sie booten, wie folgt benannt:

%Vor%     
JD. 25.08.2013 01:31
quelle
5

Es sei denn, C: ist nicht das Laufwerk, von dem Windows gestartet wurde.
Analysiert die Variable% SystemRoot%, sie enthält den Speicherort des Windows-Ordners (d. h. c: \ windows).

    
UnkwnTech 02.09.2008 19:18
quelle
3

Das hängt von Ihrer Definition ab, welches Laufwerk Windows zum Booten verwendet hat. Ich kann mir 3 verschiedene Antworten auf ein Standard-BIOS-System vorstellen (wer weiß, was ein EFI-System macht):

  1. Das Laufwerk, das den aktiven MBR enthält
  2. Die aktive Partition mit NTLDR (der Systempartition)
  3. Die Partition mit Windows (die Boot-Partition)

2 und 3 sollten leicht zu finden sein - ich bin nicht so sicher über 1. Obwohl Sie Raw Disk lesen können, um einen MBR zu finden, bedeutet das nicht, dass es das BIOS-Boot-Gerät dieses Mal oder sogar das nächste Mal ist könnte mehrere Festplatten mit MBRs haben).

Sie können wirklich nicht einmal sicher sein, dass der PC von einer Festplatte gestartet wurde - es ist durchaus möglich, Windows von einer Diskette zu booten. In diesem Fall wären sowohl 1 als auch 2 technisch gesehen eine Diskette, obwohl 3 C: \ Windows bleiben würde.

Sie müssen vielleicht etwas genauer in Ihren Anforderungen oder Zielen sein.

    
Mark Brackett 02.09.2008 21:45
quelle
2

Sie können WMI verwenden, um dies herauszufinden. Die Klasse Win32_BootConfiguration informiert Sie sowohl über das logische Laufwerk als auch über das physische Gerät, von dem Windows gestartet wird. Insbesondere wird Ihnen die Caption-Eigenschaft mitteilen, von welchem ​​ Gerät Sie booten.

Geben Sie beispielsweise in Powershell einfach gwmi Win32_BootConfiguration ein, um Ihre Antwort zu erhalten.

    
Chris Gillum 02.09.2008 21:10
quelle
1

Es gibt keine boot.ini auf einem Rechner, auf dem nur Vista installiert ist.

Wie möchten Sie das Laufwerk / die Partition identifizieren: durch den Windows-Laufwerksbuchstaben wird es zugeordnet (z. B. c: \, d :) oder anhand seiner Hardware-Signatur (welcher Bus usw.).

Für den einfachen Fall sehen Sie sich GetSystemDirectory

an     
Rob Walker 02.09.2008 19:20
quelle
1

Versuchen Sie HKEY_LOCAL_MACHINE \ SYSTEM \ Setup \ SystemPartition

    
Duncan Smart 02.09.2008 19:25
quelle
0

Sie können versuchen, eine einfache Befehlszeile zu verwenden. bcdedit ist was Sie brauchen, führen Sie einfach cmd als Administrator und Geben Sie bcdedit oder bcdedit \v ein, dies funktioniert nicht unter XP, aber ich hoffe, es ist kein Problem.

Wie auch immer für XP können Sie in boot.ini file schauen.

    
ST3 15.12.2015 15:24
quelle

Tags und Links