Ścieżki do folderów Osobistych oraz Systemowych

DRProject

Zdecydowałem się napisać ten artykuł, ponieważ problem który przedstawię jest błahy, a wydaje się trudny.
W jaki sposób można pobrać z systemu ścieżkę do folderu np. "Moje dokumenty" czy "Wyślij do ..."?
Wystarczy odczytać odpowiedni klucz w rejestrze i to wszystko !


Na początek zalecam otwarcie edytora rejestru(regedit.exe). Dzięki temu przyglądniemy się bliżej jego budowie.
<font color="red">Uwaga!
Przed eksperymentowaniem w rejestrze koniecznie trzeba zrobić jego kopię zapasową.
(Można to zrobić w bardzo prosty sposób kopiując do bezpiecznego miejsca plik System.dat )</span>

Przechodzimy do klucza:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

Widzimy tam listę ciągów wartości. Nie trudno się do myśleć co przedstawia co. Ale na wszelki wypadek podaję
ich znaczenia(wartości opisywać będę od góry do dołu :):

(Domyślna) - wartość nieustalona (lepiej zostawić w spokoju)
Administrative Tools - ścieżka do narzędzi administratorskich
AppData - ścieżka do danych aplikacji
Cache - ścieżka do pamięci podręcznej przeglądarek
CD Burning - ścieżka do folderu Nagrywanie Dysków CD
Cookies - ścieżka do folderu w którym znajdują się "nieświeże ;)" ciasteczka
Desktop - ścieżka do pulpitu
Favories - ścieżka do folderu ulubione
Fonts - ścieżka do folderu w którym są przechowywane zainstalowane w systemie czcionki(wartość ta jest identyczna dla każdego użytkownika chyba, że sobie ktoś zmienił)
History - ścieżka do folderu historia
Local AppData - ścieżka do lokalnych danych programów
Local Settings - ścieka do ustawień lokalnch
My Music - ścieżka do folderu Moja muzyka
My Pictures - ścieżka do folderu Moje obrazy
My Video - ścieżka do folderu Moje wideo
NetHood - ścieżka do otoczenia sieciowego plików
Personal - ścieżka do folderu Moje dokumenty
PrintHood - ścieżka do otoczenia sieciowego drukarek
Programs - ścieżka do menu start programy
Recent - ścieżka do folderu w którym znajdziemy kolejne "śmiecie", czyli Niedawno używane dokumenty
SendTo - ścieżka do folderu "Wyślij do ..." (zawartość tego folderu widzimy klikając prawym klawiszem na dowolny plik i wybierając Wyślij do ...) w którym znajdują się skróty do programów czy lokalizacji
StartMenu - ścieżka do folderu zawierającego elementy menu Start
Startup - ścieżka do folderu autostart ( jeśli umieścimy w nim skrót do naszego programu zostanie on uruchomiony wraz z systemem)
Templates - ścieżka do folderu Szablony

Przedstawiam banalną funkcję dzięki której będziemy mogli pobrać wybrane przez nas adresy folderów:
(Nie będę omawiać tutaj obsługi rejestru, ponieważ jest już o tym artykuł i mnóstwo wątków na naszym Forum)

uses Registry;

function PobierzAdres(sNazwa: string): string;
var
  Rejestr : TRegistry;  
begin
  Rejestr := TRegistry.Create;
  
  Rejestr.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders',  False);
  Result := Rejestr.ReadString(sNazwa);
 
  Rejestr.Free;
end;

Prawda, że proste! Wywołując funkcję jako zmienną sNazwa podajemy żądaną wartość, np. Pesonal
I już funkcja zwróci nam np: d:</i> <= tak jest w moim przypadku :)

Myślę, że to już wszystko. Jeśli zdarzyły się jakieś błędy - proszę o korektę.
Pozdrawiam całe ZSŁ w Krakowie i użytkowników 4programmers.net
BoskiRoman ;)

3 komentarzy

wiem że postawię kleksa tym pytaniem ale jak sę dostać do folderu z danymi tymczasowymi tzw TEMP ?

dobre proste rozwiązanie :|

Osobiście uważam, że bardziej pro jest użycie do tego dedykowanej funkcji: Jak odczytać ścieżki folderów specjalnych.