Правильный способ определения архитектуры процессора? - PullRequest
4 голосов
/ 07 января 2010

Я пытаюсь определить правильную архитектуру процессора для установки файла x86 msi или x64 msi.

Если я прав, для MSI мне нужна архитектура ОС CPU

Я не совсем уверен, что мой путь верен, потому что я не могу это проверить. Что ты думаешь?

private static string GetOSArchitecture()
    {
        string arch = System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE");
        string archWOW = System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432");
        if(archWOW != null && archWOW != "" && archWOW.Contains("64"))
            return "x64";
        if(arch.Contains("86"))
            return "x86";
        if (arch.Contains("64"))
            return "x64";
        return "";
    }

Ответы [ 3 ]

3 голосов
/ 07 января 2010

Вы можете использовать P / Invoke для GetNativeSystemInfo , что даст архитектуру ЦП операционной системы даже из 32-битного процесса в 64-битной ОС.

0 голосов
/ 07 января 2010

Просто попробуйте запустить 64-битное приложение. Если это не удастся, вы на 32-битной платформе.

Отредактировано для добавления на основе того, что вы пытаетесь сделать, если вы убедитесь, что ваше приложение msi runner является 32-битным приложением, тогда используйте метод Стюарта.

0 голосов
/ 07 января 2010

вправо - это вызов IsWow64Process . Этот API "Требуется Windows XP SP2, Windows Vista, Windows Server 2003 SP1 или Windows Server 2008", хотя. Этот метод еще проще.

...