2008-09-02 44 views
8

Necesito encontrar un método para determinar mediante programación qué unidad de disco de Windows está utilizando para arrancar. En otras palabras, necesito una forma de Windows para determinar qué unidad utiliza el BIOS para arrancar todo el sistema.Cómo saber qué disco Windows solía arrancar

¿Windows expone una interfaz para descubrir esto? Con lo grande que es la API de Windows, espero que haya algo enterrado allí que pueda hacer el truco.

Terry

p.s. Solo leer los primeros sectores del disco duro no revela nada. En mi caja de desarrollo tengo dos discos duros, y cuando miro el contenido de los primeros sectores en cualquiera de los discos duros, tengo una placa de caldera estándar MBR.

Edite para aclarar algunas cosas. La forma en que quiero identificar el dispositivo es con una cadena que identificará una unidad de disco físico (a diferencia de una unidad de disco lógica). Las unidades de disco físicas tienen la forma "\\. \ PHYSICALDRIVEx" donde x es un número. Por otro lado, una unidad lógica se identifica con una cadena de la forma "\\. \ X" donde x es una letra de unidad.

Edite para analizar algunas de las ideas que se descartaron. Saber qué volumen lógico usó Windows para arrancar no me sirve aquí. Esta es la razón. Supongamos que C: está utilizando una configuración RAID duplicada. Ahora, eso significa que tenemos al menos dos discos físicos. Ahora, obtengo la asignación de Logical Drive a Physical Drive y descubro que hay dos unidades físicas utilizadas por ese volumen. ¿Cuál usó Windows para arrancar? Por supuesto, esto supone que la unidad física que Windows usó para arrancar es la misma unidad física que contiene el MBR.

+0

En la línea de comandos, es decir, ejecutar, cmd enter, escriba systeminfo return. Dale un minuto para compilar la lista y la respuesta con mucho más detalle. –

Respuesta

5

A menos que C: no es el disco desde el que arrancaron las ventanas.
Analice la variable% SystemRoot%, que contiene la ubicación de la carpeta de Windows (es decir, c: \ windows).

1

No hay boot.ini en una máquina con solo Vista instalado.

Cómo desea identificar la unidad/partición: por la letra de la unidad de Windows que está asignada (por ejemplo, c: \, d :) o por la forma en que su firma de hardware (qué bus, etc.).

Para el caso simple echa un vistazo a GetSystemDirectory

+0

El caso simple: ruta de acceso de caracteres [MAX_PATH]; GetSystemDirectoryA (ruta, MAX_PATH); Más aquí: http://msdn.microsoft.com/en-us/library/ms724373(VS.85).aspx –

1

Try HKEY_LOCAL_MACHINE \ SYSTEM \ Setup \ SYSTEMPARTITION

+0

¿Está seguro de que la clave indica ese valor en los sistemas uefi? En el mío, apunta a hardiskvolume2, que es la partición winre. – user2284570

2

Puede utilizar WMI para resolver esto. La clase Win32_BootConfiguration le dirá tanto la unidad lógica como el dispositivo físico desde el que arranca Windows. Específicamente, la propiedad Caption le dirá de qué dispositivo está arrancando.

Por ejemplo, en powershell, simplemente escriba gwmi Win32_BootConfiguration para obtener su respuesta.

3

Eso depende de su definición de qué unidad de disco Windows usó para arrancar.Se me ocurren 3 respuestas diferentes en un sistema BIOS estándar (que sabe lo que hace un sistema EFI):

  1. la unidad que contiene el MBR activa
  2. La partición activa, con NTLDR (la partición del sistema)
  3. la partición que contiene Windows (la partición de arranque)

2 y 3 debe ser fácil de encontrar - no estoy tan seguro de 1. Aunque se puede leer disco sin procesar para encontrar un MBR, que doesn no significa que sea el dispositivo de arranque de BIOS esta vez o incluso la próxima (podría tener múltiples discos con MBR).

Ni siquiera puede estar seguro de que la PC se inició desde un disco duro; es perfectamente posible arrancar Windows desde un disquete. En ese caso, tanto 1 como 2 serían técnicamente un disquete, aunque 3 seguirían siendo C: \ Windows.

Es posible que deba ser un poco más específico en sus requisitos u objetivos.

6
  1. Ir en Control Panel
  2. System and Security
  3. Administrative Tools
  4. iniciar la herramienta de System Configuration

Si ha instalado varias copias de Windows, el que ha arrancado con será nombrado como :

Windows 7 (F:\Windows) 
Windows 7 (C:\Windows) : Current OS, Default OS 
0

Puede intentar usar una línea de comando simple. bcdedit es lo que necesita, simplemente ejecute cmd como administrador y escriba bcdedit o bcdedit \v, esto no funciona en XP, pero espero que no sea un problema.

De todos modos para XP, puedes echar un vistazo al archivo boot.ini.

Cuestiones relacionadas