Entwickler-Ecke

Windows API - Windows Programmordner ermitteln


colaka - Fr 19.03.10 09:35
Titel: Windows Programmordner ermitteln
Hallo,

für ein Update-Programm möchte ich den Programme-Ordner von Windows ermitteln. In einem Buch (Delphi 7 Kochbuch) habe ich die folgende Funktion gefunden:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function GetPath_Programs : string;
var  pidl          : PItemIDList;
     ProgramPath   : PChar;
begin
  if SUCCEEDED(SHGetSpecialFolderLocation(0, CSIDL_PROGRAMS, pidl)) then begin
    ProgramPath := StrAlloc(max_path);
    SHGetPathFromIDList(pidl, ProgramPath);
    result := Programpath;
    StrDispose(ProgramPath);
    if copy(result,length(result),1) <> '\' then result := result + '\';
  end else result := '';
end;


Doch diese Funktion liefert mir als Ergebnis:
C:\Dokumente und Einstellungen\All Users\Startmenu\Programme\

Ich möchte aber C:\Programme bzw C:\Programs erhalten.

Für "CSIDL_PROGRAMS" habe ich auch schon "CSIDL_COMMON_PROGRAMS" eingesetzt, aber das führt auch nicht zum gewünschten Ergebnis.

Kann mir hier vielleicht jemand sagen, wie ich den Programme-Ordner ermitteln kann?

Danke Ebi


Moderiert von user profile iconNarses: Topic aus VCL (Visual Component Library) verschoben am Fr 19.03.2010 um 10:47


Nersgatt - Fr 19.03.10 09:56

Hier findest Du eine Übersicht, über die Konstanten:
http://msdn.microsoft.com/en-us/library/bb762494%28VS.85%29.aspx

CSIDL_PROGRAM_FILES müsste für Dich das richtige sein.