WOW64: Holen Sie sich x64 % CommonProgramFiles % aus 32 Bit -Prozess
Frage
Abfragen, die ich versucht habe: ExpandEnvironmentStrings("%COMMONPROGRAMFILES%")
, GetSpecialPath(CSIDL_PROGRAM_FILES_COMMON)
.
Alle entschlossen (normalerweise) c:\\Program Files (x86)\\Common Files
Aus meiner 32-Bit-App. Ich muss eine Dateiversion untersuchen (normalerweise) unter c:\\Program Files\\Common Files
einer 64-Bit-Anwendung.
Lösung
Auf 64-Bit-Betriebssystemen verweist die ProgrammeW6432-Umgebungsvariable auf C: Programmdateien. Die vollständige Liste für eine 32-Bit-App in einer englischen Version von Windows:
- ProgrammFiles => C: Programme (x86)
- Programmdatei (x86) => C: Programme (x86)
- Programmw6432 => c: Programmdateien
- CommonProgramFiles => C: Programme (x86) Common -Dateien
- CommonProgramFiles (x86) => C: Programme (x86) Common Dateien
- CommonProgramw6432 => C: Programme Common Dateien
Nur eine Erinnerung: Dieser Ordner sollte für ein 32-Bit-Programm nichts von Interesse enthalten. Technisch. Vorsicht vor dem Umbau des Dateisystems werden Dateianforderungen von C: Programmdateien in C: Programmdateien (x86) umgeleitet. Sie müssten WoW64DisableWow64FSRectirection () verwenden, wenn Sie tatsächlich auf Dateien in diesem Verzeichnis zugreifen möchten.
Andere Tipps
%CommonProgramw6432%
static string ProgramFilesx86()
{
if (8 == IntPtr.Size
|| (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"))))
{
return Environment.GetEnvironmentVariable("ProgramFiles(x86)");
}
return Environment.GetEnvironmentVariable("ProgramFiles");
}
Brauchst du das, was du brauchst?