¿Cómo obtener una ruta al escritorio para el usuario actual en C #?

355

¿Cómo obtengo una ruta al escritorio para el usuario actual en C #?

Lo único que pude encontrar fue la clase solo VB.NET SpecialDirectories, que tiene esta propiedad:

My.Computer.FileSystem.SpecialDirectories.Desktop

¿Cómo puedo hacer esto en C #?

Cristian Diaconescu
fuente

Respuestas:

776
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
Marc Gravell
fuente
Los elementos devueltos desde esta carpeta son diferentes a lo que muestra el Explorador de Windows. Por ejemplo, en mi XP, no incluye Mis documentos, Mi computadora, Mis sitios de red, Papelera de reciclaje y algunos otros accesos directos. ¿Alguna idea de cómo obtener las mismas entradas que el Explorador de Windows?
newman
77
¿Quizás estás buscando SpecialFolder.DesktopDirectory? Esta es la carpeta física en lugar de la lógica.
gimlichael
1
Esto me devuelve el escritorio de usuario administrador si el programa se ejecuta como administrador
mrid
23
 string filePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
 string extension = ".log";
 filePath += @"\Error Log\" + extension;
 if (!Directory.Exists(filePath))
 {
      Directory.CreateDirectory(filePath);
 }
bipin
fuente
8
No estoy seguro de que sea una buena idea crear un directorio de escritorio ... pero la validación de la existencia de la primera ruta siempre es una buena idea.
Thierry Savard Saucier
44
Directory.CreateDirectoryya comprueba si el directorio existe antes de crearlo, por lo que su ifdeclaración es redundante. No estoy seguro si esta característica es de una versión posterior de C #, pero pensé en mencionarla.
emsimpson92
0
// Environment.GetFolderPath
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); // Current User's Application Data
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); // All User's Application Data
Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles); // Program Files
Environment.GetFolderPath(Environment.SpecialFolder.Cookies); // Internet Cookie
Environment.GetFolderPath(Environment.SpecialFolder.Desktop); // Logical Desktop
Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); // Physical Desktop
Environment.GetFolderPath(Environment.SpecialFolder.Favorites); // Favorites
Environment.GetFolderPath(Environment.SpecialFolder.History); // Internet History
Environment.GetFolderPath(Environment.SpecialFolder.InternetCache); // Internet Cache
Environment.GetFolderPath(Environment.SpecialFolder.MyComputer); // "My Computer" Folder
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); // "My Documents" Folder
Environment.GetFolderPath(Environment.SpecialFolder.MyMusic); // "My Music" Folder
Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); // "My Pictures" Folder
Environment.GetFolderPath(Environment.SpecialFolder.Personal); // "My Document" Folder
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); // Program files Folder
Environment.GetFolderPath(Environment.SpecialFolder.Programs); // Programs Folder
Environment.GetFolderPath(Environment.SpecialFolder.Recent); // Recent Folder
Environment.GetFolderPath(Environment.SpecialFolder.SendTo); // "Sent to" Folder
Environment.GetFolderPath(Environment.SpecialFolder.StartMenu); // Start Menu
Environment.GetFolderPath(Environment.SpecialFolder.Startup); // Startup
Environment.GetFolderPath(Environment.SpecialFolder.System); // System Folder
Environment.GetFolderPath(Environment.SpecialFolder.Templates); // Document Templates
Xiaohuan ZHOU
fuente