Подтвердить что ты не робот

Как программно получить фактический путь к папке "Program Files"?

Возможный дубликат:
С# - Как получить программные файлы (x86) в Windows Vista 64 бит

Я понимаю, что вероятность того, что пользователь изменил значение по умолчанию для Windows C:\Program Files, довольно тонкий, но произошли более странные вещи!

Как я могу получить правильный путь к Program Files из системы?

4b9b3361

Ответ 1

.NET предоставляет перечисление специальных папок для программных файлов, моих документов и т.д.

Код для преобразования из перечисления в фактический путь выглядит следующим образом:

Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)

http://msdn.microsoft.com/en-us/library/14tx8hby.aspx

Ответ 2

Просто добавьте к этому.

Если вы работаете в 32-битном режиме (даже на 64-битных os), будут возвращаться файлы SpecialFolder.ProgramFiles и% PROGRAMFILES%.. Файлы программ (x86).

Если вам нужен конкретный и/или другой, вам необходимо проверить следующее:

32:

SpecialFolder.ProgramFiles =.. Файлы программ \

64 бит в 32 бит: SpecialFolder.ProgramFiles =.. Файлы программ (x86) \ Environment.GetEnvironmentVariable("ProgramW6432") =.. Файлы программ \

64 бит в 64 бит: SpecialFolder.ProgramFiles =.. Файлы программ \ Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") =.. Файлы программ (x86)\

Очевидно, это зависит от вашего языка и т.д.

Ответ 3

Вы использовали GetFolderPath в Environment class.

try {
    Environment.GetFolderPath( Environment.SpecialFolder.ProgramFiles )
catch( ArgumentException ex ) {
    Console.Out.WriteLine( ex.StackTrace );
}

Ответ 4

Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), вероятно, является лучшим решением, но другой возможный вариант оценивает значение переменной среды ProgramFiles. Для этого вы можете использовать GetEnvironmentVariable или ExpandEnvironmentVariables метод Environment класс:

Environment.GetEnvironmentVariable("ProgramFiles")

Environment.ExpandEnvironmentVariables("%ProgramFiles%")

Ответ 5

Вы можете получить доступ к переменной среды, называемой:% PROGRAMFILES%

то есть:

%PROGRAMFILES%\Maxis\SimCity

в С#:

System.Environment.SpecialFolder.ProgramFiles

Ответ 6

Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") ?? Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)

получает "программные файлы (x86)" в 64-битных Windows и "программных файлах" в 32 бит.