Home » Tipps & Tricks » Dateien/Verzeichnisse » Verzeichnisse » Pfad des Programme-Ordners ermitteln

Pfad des Programme-Ordners ermitteln

Dieser Artikel zeigt, wie man den Pfad des Programme-Ordners ermitteln kann. In diesem Verzeichnis werden unter Windows standardgemäß Programme installiert. Den genauen Pfad, der unter jeder Windows-Version unterschiedlich sein kann, lässt sich mit folgender Funktion ermitteln:

uses ShlObj, ActiveX, SHFolder;

function GetProgramPath: string;
const
  CSIDL_PROGRAM_FILES = $26;
var
  p: PItemIDLIst;
  Buf: array [0..MAX_PATH-1] of Char;
  ShellH: IMalloc;
begin
  if SHGetSpecialFolderLocation(Application.Handle, CSIDL_PROGRAM_FILES, p) = NOERROR   then
  try
    if SHGetPathFromIDList(p, Buf) then
      Result := Buf;
    finally
      if SHGetMalloc(ShellH) = NOERROR then
         ShellH.Free(P);
    end;
end;

Die Unit SHFolder ist erst ab Delphi 6 dabei. Verwenden Sie eine ältere Delphi-Version müssen Sie die Konstante CSIDL_PROGRAM_FILES erst deklarieren:

const
  CSIDL_PROGRAM_FILES = $26;

Im Internet tauchen häufig andere Lösungen auf, die den Pfad mithilfe von Umgebungsvariablen oder über die Registry auslesen. Die in diesem Artikel genannte Lösung ist den anderen auf jeden Fall vorzuziehen.