C# - Rendszerkönyvtárak elérési útjainak meghatározása

forráskód letöltése
Ebben a példában azt nézzük meg, hogy miként kérdezhetjük le az operációs rendszer könyvtárainak elérési útjait. Amikor lekérdezzük egy könyvtár elérési útját, arról kétfajta információt tudhatunk meg. Megtudhatjuk, hogy jelenleg hol és milyen néven van a rendszerünkben, valamint megtudhatjuk azt is, hogy az operációs rendszer alapértelmezett beállításai szerint hol kellene lennie.
A lekérdezéshez az ShGetFolderPath függvényt használjuk, amely a Windows\System32 könyvtárában található shell32.dll állományban áll rendelkezésünkre.
[DllImport("shell32.dll")]
public static extern Int32 SHGetFolderPath(IntPtr hwndOwner, Int32 nFolder, IntPtr hToken, UInt32 dwFlags, StringBuilder pszPath);
SHGetFolderPath
public static extern Int32 SHGetFolderPath(
IntPtr hwndOwner,
Int32 nFolder,
IntPtrhToken,
UInt32 dwFlags,
StringBuilder pszPath
);
A rendszerben használt, azonosítóval rendelkező könyvtárak elérési útjának meghatározására szolgál.
Paraméterek
IntPtr hwndOwner
A függvényt hívó ablak azonosítója. Használhatjuk az IntPtr.Zero értéket is.
Int32 nFolder
Annak a könyvtárnak az azonosítója, amelyről információt szeretnénk megtudni.
A könyvtárnevek az operációs rendszer nyelvétől és verziójától függnek. Az alábbiakban a Windows XP magyar változatának könyvtár-elnevezéseit használjuk.
A leggyakrabban használt könyvtárakhoz konstans érték is tartozik. A következő konstansokat használhatjuk:
Konstans Jelentése
CSIDL_APPDATA Felhasználó\Application Data könyvtár.
CSIDL_COMMON_ADMINTOOLS Felügyeleti eszközök könyvtára.
CSIDL_COMMON_APPDATA All Users\Application Data könyvtár.
CSIDL_COMMON_DOCUMENTS All Users\Dokumentumok könyvtár.
CSIDL_COOKIES Cookie-k könyvtára.
CSIDL_HISTORY Felhasználó\Local Settings\History könyvtár.
CSIDL_INTERNET_CACHE Ideiglenes Internet állományok könyvtára.
CSIDL_LOCAL_APPDATA Local settings\Application Data könyvtár.
CSIDL_MYPICTURES Saját képek.
CSIDL_PERSONAL Saját dokumentumok.
CSIDL_PROGRAM_FILES Program Files könyvtár.
CSIDL_PROGRAM_FILES_COMMON Program Files\Common könyvtár.
CSIDL_SYSTEM Rendszer könyvtár.
CSIDL_WINDOWS Windows könyvtár.
A konstansok helyén számértékeket is használhatunk. A számértékkel azonosítható könyvtárak a telepített összetevőktől és komponensektől is függhetnek.
Érték Jelentése
0 Felhasználó\Asztal
2 Felhasználó\Start Menu\Programs
6 Felhasználó\Favorites
7 Felhasználó\Start Menu\Programs\Indítópult
8 Felhasználó\Recent
9 Felhasználó\SendTo
11 Felhasználó\Start Menu
13 Felhasználó\Dokumentumok\Zene
19 Felhasználó\NetHood
20 Windows\Fonts
21 Felhasználó\Sablonok
22 All Users\Start Menu
23 All Users\Start Menu\Programs
24 All Users\Start Menu\Programs\Indítópult
25 All Users\Asztal
27 Felhasználó\PrintHood
31 All Users\Favorites
45 All Users\Sablonok
46 All Users\Dokumentumok
47 All Users\Start Menu\Programs\Felügyeleti eszközök
53 All Users\Dokumentumok\Zene
54 All Users\Dokumentumok\Képek
56 Windows\Resources
IntPtrhToken
Az információhoz való hozzáféréshez használandó biztonsági TOKEN. A Windows 2000 előtti verziókban itt csak IntPtr.Zero értéket használhatunk. Az IntPtr.Zero értéket bármely Windows verzióval használhatjuk.
UInt32 dwFlags
Ez a paraméter azt határozza meg, hogy az adott könyvtár alapértelmezett vagy jelenlegi elérési útját akarjuk-e lekérdezni. Ha a jelenlegi elérési útra vagyunk kíváncsiak, akkor a 0, ha az alapértelmezettre, akkor az 1 értéket kell megadnunk.
StringBuilder pszPath
A lekérdezett elérési út ebbe a változóba fog kerülni, ha a lekérdezés sikeres.
Visszatérési érték
Ha a függvény lefutása sikeres volt, akkor a visszatérési érték 0.