2015-11-23 10 views
18

Próbuję uzyskać katalog Program Files w 64-bitowym systemie operacyjnym. poniżej kod ten zwraca taką samą odpowiedź Program Files (x86):Jak mogę uzyskać katalog Program Files?

Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86).ToString()); 
Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles).ToString()); 

pomocy?

+2

Czy Twój program testowy skompilowany jako 32- lub 64-bitowej? – ChrisF

+3

Prawdopodobnie związane z http://stackoverflow.com/questions/3397818/environment-specialfolder-programfiles-value-for-a-32-bit-application-on-on-windows – Codor

+0

Kompilowałem w trybie debugowania dla dowolnego CPU, próbowałem skompilować w x86, ale zwraca ten sam wynik: –

Odpowiedz

4

To jest to, co chcesz:

Environment.GetEnvironmentVariable("ProgramW6432") 

on powróci na ścieżkę do katalogu programu x64.

Aby uzyskać więcej informacji dotyczących zmiennych środowiskowych i WOW64, przeczytać tutaj: https://msdn.microsoft.com/en-us/library/windows/desktop/aa384274(v=vs.85).aspx

+3

Myślę, że zasługuje na wyjaśnienie ... –

+4

To jest "sztuczka". Lepiej jest użyć 'Environment.SpecialFolder'. – i486

+0

Dlaczego to "sztuczka"? Wywołuje zmienną środowiskową i zwraca wartość, po której następuje PO. Używanie specjalnego folderu nie działa dla niego. – JaggenSWE

25

Musisz uruchomić program w trybie 64-bitowym, oczywiście. Wtedy to będzie drukować

C:\Program Files (x86) 
C:\Program Files 

Przejdź do: Project> właściwościach Project ...> Budowa> Wyłącz Wolę 32-bitowy

1

Z tego

Console.WriteLine(Environment.GetEnvironmentVariable("ProgramFiles(x86)")); 

Proszę sprawdzić ten link C# - How to get Program Files (x86) on Windows 64 bit

Powyższy link pokazuje, że zwróci x86 Program Files directory we wszystkich trzech konfiguracjach systemu Windows:

32 bitowych Windows Program
32 bit działa na 64 bitowym systemie Windows programu
64 bitowym działa na 64 bitowych Windows

Powiązane problemy