Wie einige sicher wissen hat sich in Vista (und höher) die Ermittlung von Systemordnern geändert. Ab Vista sollte zur Ermittlung von Systemordnern nur noch die Funktion
SHGetKnownFolderPath verwendet werden. Die bisher verwendete Funktion SHGetFolderPath und die CSIDL-Konstanten sind nur noch aus Kompatibilitätsgründen vorhanden. Da ich bisher keine komplette Delphi-Implementation gefunden habe, habe ich die angehängte
Unit erstellt. Vielleicht kann der ein oder andere sie gebrauchen.
Die Verwendung der
Unit ist einfach:
Delphi-Quellcode:
uses
...uGetKnownFolderPath;
.
.
.
procedure TForm1.Button1Click(Sender: TObject);
var
ws : WideString;
begin
ws := GetKnownFolderPath(FOLDERID_Windows);
ShowMessage(ws);
end;
Dieser Aufruf gibt bspw.
C:\Windows zurück. Die Bedeutung der einzelnen FOLDERID's kann im
MSDN nachgelesen werden.