Поиск в ProgramFiles и ProgramFiles(x86) с использованием переменных среды в C++ и C# / VB.NET

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

Я пытаюсь запустить стороннюю программу от себя. Я сделал быстрый поиск в Program Files а также Program Files (x86)и я только что понял, что путь вернулся getenv("ProgramFiles") на самом деле зависит от того, работаю ли я в x64 или Win32.

Как я могу искать (как в C++, так и в C# или VB.NET) обе папки Program Files, используя переменные среды, а не жестко запрограммированные имена - поскольку независимо от версии моей программы, запущенной на компьютере пользователя, у пользователя может быть другая один установлен в другой версии?

Мой код сейчас: в C++:

fs::path root_directory = fs::path(getenv("ProgramFiles"));
// and then I change to 
root_directory = fs::path(getenv("ProgramFiles(x86)"));

в VB.NET:

System.Environment.GetEnvironmentVariable("ProgramFiles")

Я посмотрел на этот источник: http://msdn.microsoft.com/en-us/library/aa365743

Но если я реализую то, что они говорят, я получаю x86 все время...

2 ответа

Решение

Вы можете получить это, используя следующие,

Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
Другие вопросы по тегам