Einzelnen Beitrag anzeigen

ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#1

"C:\Programme" ermitteln?

  Alt 26. Nov 2005, 13:58
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
  Mit Zitat antworten Zitat