Speciální systémové adresáře ve WPF


Pracuje se soubory nebo jen potřebujete získat správnou cestu některého ze systémových adresářů? Vhodným řešením je použití třídy Environment a výčtu SpecialFolder(s)…

Takže např. pokud potřebuje cestu adresáře Program Files (x86) vždy na konkrétním počítači, tak stačí použít SpecialFolder.ProgramFilesX86 za pomoci metody Environment.GetFolderPath. V kódu se je pak použití následující:


string programFilesPath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86);

Přehled speciálních adresářů včetně cest (na Windows 8 Pro):

SpecialFolder Cesta
Desktop C:\Users\{LoggedUserName}\Desktop
Programs C:\Users\{LoggedUserName}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
MyDocuments C:\Users\{LoggedUserName}\Documents
MyDocuments C:\Users\{LoggedUserName}\Documents
Favorites C:\Users\{LoggedUserName}\Favorites
Startup C:\Users\{LoggedUserName}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Recent C:\Users\{LoggedUserName}\AppData\Roaming\Microsoft\Windows\Recent
SendTo C:\Users\{LoggedUserName}\AppData\Roaming\Microsoft\Windows\SendTo
StartMenu C:\Users\{LoggedUserName}\AppData\Roaming\Microsoft\Windows\Start Menu
MyMusic C:\Users\{LoggedUserName}\Music
MyVideos C:\Users\{LoggedUserName}\Videos
DesktopDirectory C:\Users\{LoggedUserName}\Desktop
MyComputer  
NetworkShortcuts C:\Users\{LoggedUserName}\AppData\Roaming\Microsoft\Windows\Network Shortcuts
Fonts C:\Windows\Fonts
Templates C:\Users\{LoggedUserName}\AppData\Roaming\Microsoft\Windows\Templates
CommonStartMenu C:\ProgramData\Microsoft\Windows\Start Menu
CommonPrograms C:\ProgramData\Microsoft\Windows\Start Menu\Programs
CommonStartup C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
CommonDesktopDirectory C:\Users\Public\Desktop
ApplicationData C:\Users\{LoggedUserName}\AppData\Roaming
PrinterShortcuts C:\Users\{LoggedUserName}\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
LocalApplicationData C:\Users\{LoggedUserName}\AppData\Local
InternetCache C:\Users\{LoggedUserName}\AppData\Local\Microsoft\Windows\Temporary Internet Files
Cookies C:\Users\{LoggedUserName}\AppData\Roaming\Microsoft\Windows\Cookies
History C:\Users\{LoggedUserName}\AppData\Local\Microsoft\Windows\History
CommonApplicationData C:\ProgramData
Windows C:\Windows
System C:\Windows\system32
ProgramFiles C:\Program Files (x86)
MyPictures C:\Users\{LoggedUserName}\Pictures
UserProfile C:\Users\{LoggedUserName}
SystemX86 C:\Windows\SysWOW64
ProgramFilesX86 C:\Program Files (x86)
CommonProgramFiles C:\Program Files (x86)\Common Files
CommonProgramFilesX86 C:\Program Files (x86)\Common Files
CommonTemplates C:\ProgramData\Microsoft\Windows\Templates
CommonDocuments C:\Users\Public\Documents
CommonAdminTools C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools
AdminTools C:\Users\{LoggedUserName}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools
CommonMusic C:\Users\Public\Music
CommonPictures C:\Users\Public\Pictures
CommonVideos C:\Users\Public\Videos
Resources C:\Windows\resources
LocalizedResources  
CommonOemLinks  
CDBurning C:\Users\{LoggedUserName}\AppData\Local\Microsoft\Windows\Burn\Burn

A na závěr postup jak rychle projít nebo zjistit všechny cesty speciálních adresářů:


StringBuilder builder = new StringBuilder();
foreach (Environment.SpecialFolder specialFolder in Enum.GetValues(typeof (Environment.SpecialFolder)))
{
  builder.AppendLine(string.Format("{0}: {1}", specialFolder, Environment.GetFolderPath(specialFolder)));
}
string specialFolders = builder.ToString();

, , , , ,

Komentáře jsou uzavřeny.