VC++: Windows-Ordner finden

Hallo,

wie kann ich (Visual C++ 6.0) den kompletten Pfad zum Windowsverzeichnis herausfinden? Die Funktion sollte unabhängig vom Verzeichnisnamen sein. Ist Windows (NT oder 9x) z.B. in d:\horst installiert, sollte die Funktion auch d:\horst zurückliefern. Gibt es sowas schon vorgefertigt?

Danke, Robert

Die Windows-API stellt dafür die Funktionen GetWindowsDirectory und GetSystemDirectory zur Verfügung. (Hab jetzt zwar die Referenz grad nicht vor mir aber ich glaube das sind ihre Namen. Falls nötig, kann ich dir die Deklarationen morgen nachreichen…

Hi,

hier sind die genauem Dokumentationen für die WIN_API-Funktionen GetWindowsDirectory und GetSystemDirectory (Quelle: Win32hlp).

Gruß
Ted

The GetWindowsDirectory function retrieves the path of the Windows directory. The Windows directory contains such files as Windows-based applications, initialization files, and Help files.

UINT GetWindowsDirectory(

LPTSTR lpBuffer, // address of buffer for Windows directory
UINT uSize // size of directory buffer
);
Parameters

lpBuffer

Points to the buffer to receive the null-terminated string containing the path. This path does not end with a backslash unless the Windows directory is the root directory. For example, if the Windows directory is named WINDOWS on drive C, the path of the Windows directory retrieved by this function is C:\WINDOWS. If Windows was installed in the root directory of drive C, the path retrieved is C:.

uSize

Specifies the maximum size, in characters, of the buffer specified by the lpBuffer parameter. This value should be set to at least MAX_PATH to allow sufficient room in the buffer for the path.

Return Values

If the function succeeds, the return value is the length, in characters, of the string copied to the buffer, not including the terminating null character.
If the length is greater than the size of the buffer, the return value is the size of the buffer required to hold the path.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

The Windows directory is the directory where an application should store initialization and help files. If the user is running a shared version of Windows, the Windows directory is guaranteed to be private for each user.
If an application creates other files that it wants to store on a per-user basis, it should place them in the directory specified by the HOMEPATH environment variable. This directory will be different for each user, if so specified by an administrator, via the User Manager administrative tool. HOMEPATH always specifies either the user’s home directory, which is guaranteed to be private for each user, or a default directory (for example, C:\USERS\DEFAULT) where the user will have all access.

The GetWindowsDirectory function retrieves the path of the Windows directory. The Windows directory contains such files as Windows-based applications, initialization files, and Help files.

##############################

The GetSystemDirectory function retrieves the path of the Windows system directory. The system directory contains such files as Windows libraries, drivers, and font files.

UINT GetSystemDirectory(

LPTSTR lpBuffer, // address of buffer for system directory
UINT uSize // size of directory buffer
);
Parameters

lpBuffer

Points to the buffer to receive the null-terminated string containing the path. This path does not end with a backslash unless the system directory is the root directory. For example, if the system directory is named WINDOWS\SYSTEM on drive C, the path of the system directory retrieved by this function is C:\WINDOWS\SYSTEM.

uSize

Specifies the maximum size of the buffer, in characters. This value should be set to at least MAX_PATH.

Return Values

If the function succeeds, the return value is the length, in characters, of the string copied to the buffer, not including the terminating null character. If the length is greater than the size of the buffer, the return value is the size of the buffer required to hold the path.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

Applications should not create files in the system directory. If the user is running a shared version of Windows, the application does not have write access to the system directory. Applications should create files only in the directory returned by the GetWindowsDirectory function.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Die Windows-API stellt dafür die
Funktionen GetWindowsDirectory und
GetSystemDirectory zur Verfügung.

Danke Euch beiden… hat mir sehr geholfen. Vielleicht hätte ich nur mal intensiver in der Doku schauen sollen :wink: