32-Bit Systemverzeichnis in 64-Bit Windows-Version

ronaldh

Erfahrenes Mitglied
Hallo,

mit der API GetSystemDirectory erhält man ja das Windows-Systemverzeichnis. In 64-Bit-Windows-Versionen wird hier jedoch das Systemverzeichnis für 64-Bit zurück geliefert. Dies nützt in VB6 ja in der Regel nichts, da die verwendeten Controls ja auch 32-Bit sind.

Gibt es eine API, die das Verzeichnis für 32-Bit-System zurückliefert (in der Regel ja SysWow64)?
 
B

BREK

Über Umgebungsvariablen?

Folgende Werte unter Windows 2003 Server SP2 - x64:

C:\Documents and Settings\Administrator> set
[...]
PROCESSOR_ARCHITECTURE=AMD64
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
[...]

In VB6 wäre es dann Environ().
 

ronaldh

Erfahrenes Mitglied
Ich brauche ja das Systemverzeichnis, nicht das Programmverzeichnis. Und das Systemverzeichnis steht in den Umgebungsvariablen nicht drin.

Und eigentlich wollte ich eine API. Es gibt die API
Code:
    Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

aber diese liefert halt in einem 64-Bit-Windows das Verzeichnis "C:\Windows\System32" zurück, welches (entgegen der Bezeichnung] das Verzeichnis für 64-Bit ist, während das Verzeichnis "C:\Windows\SysWow64" in der Regel das Verzeichnis für 32-Bit-Controls ist. Vermutlich gibt es eine API, die mir in 64-Bit-Umgebungen den jeweiligen Pfad der 32-Bit-Controls liefert, aver die habe ich nocht nicht gefunden.