Как программно получить фактический путь к папке "Program Files"?
Возможный дубликат:
C# - Как получить программные файлы (x86) в Windows Vista 64 бит
Я понимаю, что шансы пользователя изменить Windows по умолчанию C:\Program Files
довольно тонкий, но странные вещи произошли!
Как я могу получить правильный путь к Program Files
из системы?
6 ответов
.NET предоставляет список " специальных папок" для программных файлов, моих документов и т. Д.
Код для преобразования из перечисления в фактический путь выглядит следующим образом:
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
Просто чтобы добавить к этому.
Если вы работаете в 32-битном режиме (даже на 64-битной ОС), SpecialFolder.ProgramFiles и%PROGRAMFILES% будут возвращать..Program Files (x86).
Если вам определенно нужно одно и / или другое, вам необходимо проверить следующее:
32- битная система:
SpecialFolder.ProgramFiles
=..Программные файлы \
64- битная система в 32- битном процессе:SpecialFolder.ProgramFiles
=..Программные файлы (x86)\Environment.GetEnvironmentVariable("ProgramW6432")
=..Программные файлы \
64- битная система в 64- битном процессе:SpecialFolder.ProgramFiles
=..Программные файлы \Environment.GetEnvironmentVariable("PROGRAMFILES(X86)")
=..Программные файлы (x86)\
Очевидно, это зависит от вашего региона и т. Д.
Вы должны использовать GetFolderPath в классе Environment.
try {
Environment.GetFolderPath( Environment.SpecialFolder.ProgramFiles )
catch( ArgumentException ex ) {
Console.Out.WriteLine( ex.StackTrace );
}
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
это, вероятно, лучшее решение, но другим возможным вариантом является оценка стоимости ProgramFiles
переменная окружения. Для этого вы можете использовать GetEnvironmentVariable
или же ExpandEnvironmentVariables
метод Environment
учебный класс:
Environment.GetEnvironmentVariable("ProgramFiles")
Environment.ExpandEnvironmentVariables("%ProgramFiles%")
Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") ?? Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
получает "программные файлы (x86)" в 64-битной Windows и "программные файлы" в 32-битной.
Вы можете получить доступ к переменной среды с именем: %PROGRAMFILES%
то есть:
%PROGRAMFILES%\Maxis\SimCity
в C#:
System.Environment.SpecialFolder.ProgramFiles