Как программно получить фактический путь к папке "Program Files"?
Возможный дубликат:
С# - Как получить программные файлы (x86) в Windows Vista 64 бит
Я понимаю, что вероятность того, что пользователь изменил значение по умолчанию для Windows C:\Program Files
, довольно тонкий, но произошли более странные вещи!
Как я могу получить правильный путь к Program Files
из системы?
Ответы
Ответ 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 бит.