2011-08-30 8 views
19

Como sugiere el título, ¿cómo se puede conseguir la unidad de sistema operativo actual, por lo que habría que agregar que en un ejemplo de cadena:Cómo obtener el directorio actual de Windows, p. C: en C#

MessageBox.Show(C:\ + "My Documents"); 

Gracias

+1

posible duplicado de [Cómo obtener el nombre de la unidad que el sistema operativo está instalado en?] (Http: // stackoverflow. com/questions/200066/how-to-get-the-name-of-the-drive-that-the-os-is-installed-on) –

+0

Millas no se olvide de votar por las respuestas una vez que su pregunta haya sido contestada. –

+0

@ Cubicle.Jockey Lo haré :) – Miles

Respuesta

47

Añadir una referencia Sistema IO,

using System IO; 

A continuación, escriba su código de esta manera;

string path = Path.GetPathRoot(Environment.SystemDirectory); 

Este código se establecerá path a la letra de unidad local que Windows está instalado. Puede usar la variable anterior para más modificaciones.

por ejemplo:

MessageBox.Show("Windows is installed to Drive " + path); 

enter image description here

+1

Señor, estoy detrás de la unidad de la instalación de Windows: p. C: \ – Miles

+2

@Miles - sí, lo entiendo. Eso es exactamente lo que Path.GetPathRoot (Environment.SystemDirectory) le brinda. –

+0

¡Gracias! – Miles

6

Puede usar para obtener el directorio actual. Environment.SystemDirectory le dará la carpeta del sistema (es decir: C: \ Windows \ System32). Path.GetPathRoot le dará la raíz del camino:

var rootOfCurrentPath = Path.GetPathRoot(Environment.CurrentDirectory); 
var driveWhereWindowsIsInstalled = Path.GetPathRoot(Environment.SystemDirectory); 
8

Al buscar una carpeta específica (como Mis documentos), no utilizan una ruta no modificable. Las rutas pueden cambiar de versión a versión de Windows (C:\Documents and Settings\ frente a C:\Users\) y se localizaron en versiones anteriores (C:\Users\user\Documents\ frente a C:\Usuarios\user\Documentos\). Dependiendo de la configuración, los perfiles de usuario podrían estar en una unidad diferente de Windows. Es posible que Windows no esté instalado donde lo espera (no tiene que estar en el \Windows\). Probablemente haya otros casos de los que no estoy enterado.

En su lugar, use la Shell API (SHGetKnownFolderPath) para obtener la ruta real. En .NET, estos valores se obtienen fácilmente desde Environment.GetFolderPath. Si usted está buscando la carpeta Mis documentos del usuario:

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 

Full list of special folders

Cuestiones relacionadas