Определение типа архитектуры процессора с использованием C # - PullRequest
18 голосов
/ 20 апреля 2009

Я хочу проверить, какая архитектура процессора запущена пользователем, i386 или X64 или AMD64. Я хочу сделать это в C #. Я знаю, что могу попробовать WMI или реестр. Есть ли другой путь, кроме этих двух? Мой проект нацелен на .NET 2.0!

Ответы [ 13 ]

0 голосов
/ 22 августа 2011

Вот что я сделал:

public static bool Isx86()
{
    return (Environment.ExpandEnvironmentVariables("%ProgramFiles(x86)%").Length == 0);
}

Если вы используете 64-битную архитектуру, у вас будет две переменные env программного файла. Если вы используете x86, у вас будет только один.

0 голосов
/ 20 апреля 2009

Я полагаю, что вам следует избегать таких явных проблем, как WMI и LINQ ... и вам, в конечном счете, придется получать больше информации по мере продвижения, ни один из которых не удовлетворен раздутыми apis и фреймворками.

Просто вызовите dll, которая вызывает и извлекает информацию о CPUID. C ++ / CLI или pinvoke будут делать и получать всю необходимую информацию о поставщике. Сначала нужно посмотреть, поддерживается ли инструкция (99% времени).

Чтобы быстро приступить к работе, проверьте сайт Intel на наличие образца wincpuid и извлеките фрагмент из cpuid.h оттуда. Есть только 2 поставщика, и один хорош с задержкой памяти, а другой нет (как нативный или управляемый код). Таким образом, у вас будут проблемы с Mono на других архитектурах и т. Д. (Кто не кстати). Что касается x64, вы уже знаете это или просто получаете corflags (он уже есть и убивает ваш жесткий диск вашего клиента с помощью дистрибутива .NET) ..

(http://software.intel.com/en-us/articles/api-detects-ia-32-and-x64-platform-cpu-characteristics/)

0 голосов
/ 20 апреля 2009

Вы могли бы спросить пользователя, возможно?

Шучу, конечно ... Я думаю, что WMI - это то, что вы использовали бы для этого. Но, может быть, есть и другой способ?

Если вы выберете WMI, то LinqToWmi может пригодиться. Я попробовал один раз, и это выглядело довольно просто =) -> http://www.codeplex.com/linq2wmi

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...