Как я могу определить, является ли другой процесс 64-битным? - PullRequest
6 голосов
/ 01 апреля 2011

У меня есть Процесс для работающего приложения.

Как я могу определить (предпочтительно без p / invoking), если этот процесс 64-битный?

Ответы [ 4 ]

4 голосов
/ 01 апреля 2011

Я не думаю, что есть 100% точный способ узнать без PInvoke.

Но один из пунктов, который может сработать, - это проверка набора загруженных модулей (Process.Modules). Если первичные модули (user32, kernel32 и т. Д.) Поступают из каталога Wow64, и вы работаете на 64-битной машине, то вполне вероятно, что это 32-битный процесс. Если они не приходят из каталога Wow64 и это 64-битный компьютер, то, скорее всего, это 64-битный процесс.

Опять не окончательная, но хорошая оценка.

4 голосов
/ 01 апреля 2011

Вам нужно будет использовать PInvoke IsWow64Process .

0 голосов
/ 13 августа 2016

Как уже упоминалось, вы можете использовать IsWow64Process , который легко реализовать здесь .

0 голосов
/ 20 октября 2012

Легко, если процесс выполняется в 64-битной операционной системе, то это 64-битный процесс.

Возможно, что код, изначально написанный для 32-битных систем, может работать в 64-битных версиях, потому что он может работать в рамках ограничений памяти 64-битной среды. Однако он больше не связан этими ограничениями независимо от того, предназначен ли он для использования этого факта. Таким образом, не существует такого понятия, как «32-битный процесс», если он работает на 64-битной машине.

Думайте об этом как о Собаке, которого обучают оставаться в определенной области, используя невидимое ограждение. Если огороженная территория будет расширена позже, вы обнаружите, что некоторые умные собаки немедленно начнут использовать новую зону. Даже если другие собаки могут не знать об изменениях и продолжать действовать в пределах их предполагаемых границ, это не означает, что их ограничения будут отличаться от ограничений более умных.

...