Как получить путь к рабочему столу для текущего пользователя в C #?


355

Как мне получить путь к рабочему столу для текущего пользователя в C #?

Единственное, что я смог найти, это класс только для VB.NET SpecialDirectories, у которого есть это свойство:

My.Computer.FileSystem.SpecialDirectories.Desktop

Как я могу сделать это в C #?

Ответы:


776
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

Элементы, возвращаемые из этой папки, отличаются от того, что показывает Window Explorer. Например, в моем XP он не включает Мои документы, Мой компьютер, Мои сетевые объекты, Корзину и некоторые другие ярлыки. Есть идеи, как получить те же записи, что и в Windows Explorer?
новичок

7
Может быть, вы ищете SpecialFolder.DesktopDirectory? Это физическая папка, а не логическая.
gimlichael

1
Это возвращает мне рабочий стол администратора, если программа запущена с
правами

23
 string filePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
 string extension = ".log";
 filePath += @"\Error Log\" + extension;
 if (!Directory.Exists(filePath))
 {
      Directory.CreateDirectory(filePath);
 }

8
Не уверен, что это хорошая идея - создать каталог на рабочем столе ... но проверка существования пути 1-го всегда хорошая идея.
Тьерри Савард Сауцер

4
Directory.CreateDirectoryуже проверяет, существует ли каталог перед его созданием, поэтому ваше ifутверждение является избыточным. Не уверен, что эта функция из более поздней версии C #, но думал, что я упомянул об этом.
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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.