2009-05-26 13 views

Respuesta

4

Una cosa que en realidad puedo malinterpretar es que quieres la unidad del sistema, pero al usar "windir" obtendrás la carpeta de Windows. Por lo tanto, si necesita una forma segura para obtener la carpeta de Windows, debe usar la antigua función API GetWindowsDirectory.

Aquí está la función preparada para el uso de C#. ;-)

[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)] 
    static extern uint GetWindowsDirectory(StringBuilder lpBuffer, uint uSize); 

    private string WindowsDirectory() 
    { 
     uint size = 0; 
     size = GetWindowsDirectory(null, size); 

     StringBuilder sb = new StringBuilder((int)size); 
     GetWindowsDirectory(sb, size); 

     return sb.ToString(); 
    } 

Así que si realmente necesita la unidad en la que se está ejecutando Windows, que posteriormente podría llamar

System.IO.Path.GetPathRoot(WindowsDirectory()); 
+0

¡Oye, eso es lo que dije! –

+0

@Richard: Eso es correcto, pero en lugar de solo señalar la dirección concreta, agregué una muestra sobre cómo se puede usar la función. – Oliver

0

Theres una variable de entorno llamada SystemDrive

C:\>SET SystemDrive 
SystemDrive=C: 
+0

Desafortunadamente, ese método sufre del mismo problema que el WinD original variable de entorno ir: un usuario puede cambiarla o eliminarla arbitrariamente de su entorno. –

8

Ésta devuelve la ruta de acceso al directorio del sistema (system32).

Environment.GetFolderPath(Environment.SpecialFolder.System) 

Usted puede ser capaz de usar eso, entonces no necesita depender de variables de entorno.

+0

Vale la pena señalar que GetFolderPath expresa los miedos de las variables de entorno ya que usa SHGetFolderPath internamente. –

17
string windir = Environment.SystemDirectory; // C:\windows\system32 
string windrive = Path.GetPathRoot(Environment.SystemDirectory); // C:\ 

Nota: Esta propiedad usa internamente la API Win32 de GetSystemDirectory(). No depende de variables de entorno.

1

Nunca leer variables de entorno (cualquier secuencia de comandos o usuario puede cambiarlos!)
El método oficial (MS interno, utilizado por Explorer) es una API de Win32 preguntas frecuentes durante décadas (ver Grupos de Google, Win32, Sistema api)

Cuestiones relacionadas