2010-03-29 13 views
7

Abfragen, die ich versuchte: ExpandEnvironmentStrings("%COMMONPROGRAMFILES%"), GetSpecialPath(CSIDL_PROGRAM_FILES_COMMON).WOW64: erhalten x64% CommonProgramFiles% von 32 Bit Prozess

Alle auf (in der Regel) c:\\Program Files (x86)\\Common Files von meiner 32-Bit-App auflösen. Ich muss eine Dateiversion überprüfen, die (normalerweise) unter c:\\Program Files\\Common Files einer 64-Bit-Anwendung installiert ist.

Antwort

15

Auf 64-Bit-Betriebssystemen, die ProgramW6432 Umgebungsvariable auf c: \ program files. Die vollständige Liste für eine 32-Bit-Anwendung auf einer englischen Version von Windows:

  • Programfiles => c: \ Programme (x86)
  • Programfiles (x86) => c: \ Programme (x86)
  • ProgramW6432 => c: \ program files
  • Common => c: \ Programme (x86) \ gemeinsame Dateien
  • Common (x86) => c: \ Programme (x86) \ gemeinsame Dateien
  • CommonProgramW6432 => c: \ Programme \ Gemeinsame Dateien

Nur eine Erinnerung: Dieser Ordner sollte nichts von Interesse für ein 32-Bit-Programm enthalten. Technisch. Vorsicht vor dem Dateisystem-Redirector, es wird Dateianforderungen von c: \ Programmdateien in C: \ Programmdateien (x86) umleiten. Sie müssten Wow64DisableWow64FsRedirection() verwenden, wenn Sie tatsächlich auf Dateien in diesem Verzeichnis zugreifen wollten.

+0

Ich überprüfe gerade, dass eine erforderliche (64 Bit) Anwendung bereits installiert ist. – peterchen

-1
static string ProgramFilesx86() 
     { 
      if (8 == IntPtr.Size 
       || (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432")))) 
      { 
       return Environment.GetEnvironmentVariable("ProgramFiles(x86)"); 
      } 

      return Environment.GetEnvironmentVariable("ProgramFiles"); 
     } 

Ist das, was Sie brauchen?

+0

Das sieht sicher nicht wie C++ aus. Vielleicht C++/CLI, aber ich würde wetten, dass C# raten würde. –

+0

Ich hätte schwören können, ich sah C# auf den Tags. Es tut uns leid. –

5

% CommonProgramW6432%

+0

Danke! Irgendwie habe ich das in der Liste der env-Variablen übersehen. – peterchen