Запросы я попробовал: ExpandEnvironmentStrings("%COMMONPROGRAMFILES%")
, GetSpecialPath(CSIDL_PROGRAM_FILES_COMMON)
.
Вся твердость к (обычно) c:\\Program Files (x86)\\Common Files
из моего 32-разрядного приложения. Я должен проверить версию файла, установленную (обычно) под c:\\Program Files\\Common Files
из 64-разрядного приложения.
В 64-разрядных операционных системах переменная среды ProgramW6432 указывает на файлы c: \ program. Полный список 32-разрядных приложений в английской версии Windows:
Напоминаем: в этой папке не должно быть ничего интересного для 32-битной программы. Технически. Остерегайтесь перенаправителя файловой системы, он будет перенаправлять запросы файлов из c: \ program files в c: \ program files (x86). Вам придется использовать Wow64DisableWow64FsRedirection (), если вы действительно хотите получить доступ к файлам в этом каталоге.
static string ProgramFilesx86()
{
if (8 == IntPtr.Size
|| (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"))))
{
return Environment.GetEnvironmentVariable("ProgramFiles(x86)");
}
return Environment.GetEnvironmentVariable("ProgramFiles");
}
Это то, что вам нужно?