Hallo,
wie kann ich den Systempfad C:\Programme ermitteln bzw. wie er jetzt in Wirklichkeit heisst? Unter XP ist das kein Problem mit der GetShellFolder-Funktion:
ich brauch nur 38 einzusetzen.
Delphi-Quellcode:
function GetShellFolder(CSIDL: integer): string;
var
pidl : PItemIdList;
FolderPath : string;
SystemFolder : Integer;
Malloc : IMalloc;
begin
Malloc := nil;
FolderPath := '';
SHGetMalloc(Malloc);
if Malloc = nil then
begin
Result := FolderPath;
Exit;
end;
try
SystemFolder := CSIDL;
if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl)) then
begin
SetLength(FolderPath, max_path);
if SHGetPathFromIDList(pidl, PChar(FolderPath)) then
begin
SetLength(FolderPath, length(PChar(FolderPath)));
end;
end;
Result := FolderPath;
finally
Malloc.Free(pidl);
end;
end;
, aber unter Win98 gibt es nur eine sehr begrenzte Anzahl an solchen CSIDLs:
Code:
CSIDL 000: C:\WINDOWS\Desktop
CSIDL 002: C:\WINDOWS\Startmenü\Programme
CSIDL 005: C:\Eigene Dateien
CSIDL 006: C:\WINDOWS\Favoriten
CSIDL 007: C:\WINDOWS\Startmenü\Programme\Autostart
CSIDL 008: C:\WINDOWS\Recent
CSIDL 009: C:\WINDOWS\SendTo
CSIDL 011: C:\WINDOWS\Startmenü
CSIDL 016: C:\WINDOWS\Desktop
CSIDL 019: C:\WINDOWS\Netzwerkumgebung
CSIDL 020: C:\WINDOWS\FONTS
CSIDL 021: C:\WINDOWS\ShellNew
CSIDL 026: C:\WINDOWS\Anwendungsdaten
CSIDL 032: C:\WINDOWS\Temporary Internet Files
CSIDL 033: C:\WINDOWS\Cookies
CSIDL 034: C:\WINDOWS\Verlauf
wie kann ich auch dort C:\Programme erhalten?
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates