%ProgramFiles% - Verzeichnis auslesen.
-
Hallo,
ich versuche seit einiger Zeit vergebendst, das %ProgramFiles%-Verzeichnis auszulesen. Folgendes habe ich schon versucht, aber beide Versionen funktionieren nur unter Windows XP; unter 98 liefern Sie mir entweder einen leeren String oder Datenmüll:
char buffer[MAX_PATH]; LPITEMIDLIST iidl; SHGetSpecialFolderLocation(0, CSIDL_PROGRAM_FILES, &iidl); SHGetPathFromIDList(iidl, buffer);char buffer[MAX_PATH]; GetEnvironmentVariable(TEXT("ProgramFiles"), buffer, sizeof(buffer));Es ist wahrscheinlich nur eine Kleinigkeit, aber ich komme da nicht weiter. FAQ und Google haben mir nicht geholfen. Entweder stelle ich mich also mal wieder besonders doof an oder bin einfach nur blind

-
Wenn Du schon TEXT verwendest, dann auch bitte anstelle "char" ein "TCHAR"!
Folgendes funktioniert bei mir Problemlos:
#include <windows.h> #include <tchar.h> int _tmain() { TCHAR szBuffer[_MAX_PATH]; GetEnvironmentVariable(_T("ProgramFiles"), szBuffer, sizeof(szBuffer) / sizeof(TCHAR)); }
-
Gleiches Problem: Windows XP -> Fehlerfrei; Win9x -> Datenmüll

Ich habe jetzt noch einmal nachgeguckt, und unter Windows 98 scheint es die Umgebungsvariable %ProgramFiles% gar nicht zu geben!? (Jedenfalls ist sie auf meinem Testsystem, Windows 98 Second Edition Blankinstallation, nicht gesetzt).
Gibt es vielleicht einen Weg, den Ordner ohne die Umgebungsvariable heraus zu finden?
-
Gibt es vielleicht einen Weg, den Ordner ohne die Umgebungsvariable heraus zu finden?
CSIDL_PROGRAM_FILES_COMMON ist erst ab Windows ME bzw. nach Installation des Explorers in der Version 5.0 vorhanden. Für frühere Versionen von Windows gibt jedoch einen "Nachrüstsatz", der mit der Funktion "SHGetFolderPath" in der frei verteilbaren shfolder.dll realisiert wird.
Such mal im MSDN nach "SHGetFolderPath".