.NET 프레임 워크가 프로세서 아키텍처를 실행합니다
-
16-09-2019 - |
문제
여기에는 지원되는 모든 프로세서 아키텍처가 열거되어 있습니다. http://msdn.microsoft.com/en-us/library/system.reflection.processorarchitecture.aspx
실행중인 환경에 해당하는 것을 결정할 수있는 방법이 있습니까? system.reflection.assembly.getexecutingAssembly (). ProcessorArchitecture는 MSIL을 반환합니다.
편집 : Bojan Resnik은 답을 게시하고 삭제했습니다. 나는 내가 얻은 부분적인 흔적에서 약간의 설명이 필요하다는 것을 알 수있다.
어셈블리는 여러 아키텍처에서 실행해야하며 실행 프로세스가 수용하는 어셈블리 지침에 따라 다른 작업을 수행해야합니다. 기본적으로, 기본 DLL의 버전을 선택해야합니다. 각 아키텍처마다 하나가 있습니다.
해결책
p/호출 getsysteminfo .NET에서 사소하고 WMI보다 훨씬 가볍습니다. 또한 프로세스에서 볼 수 있듯이 아키텍처를 반환하므로 x64 컴퓨터에서 와우 프로세스는 x86을 보이고 기본 프로세스는 x64를 볼 수 있습니다.
다른 팁
다음은 시도해 볼 수있는 몇 가지 WMI 설정이 있습니다. 현재 64 비트 시스템이 없지만 확인하기가 쉽습니다. 소스 코드는 다음과 같습니다. 결국 통화 조합을 사용해야 할 수도 있습니다 (예 : WOW를 찾기 위해 하나, 다른 하나는 네이티브 32 대 64 등을 찾습니다).
또한 확인하십시오 http://social.msdn.microsoft.com/forums/en-us/windowssdk/thread/b1cfef99-5247-47c5-93d4-31eb6849df48 더 많은 토론을 위해.
using System;
using System.Management;
class Program
{
static void Main(string[] args)
{
foreach (ManagementBaseObject o in new ManagementClass("Win32_OperatingSystem").GetInstances())
{
Console.WriteLine("Win32_OperatingSystem.OSArchitecture = " + o.Properties["OSArchitecture"].Value);
break;
}
foreach (ManagementBaseObject o in new ManagementClass("Win32_ComputerSystem").GetInstances())
{
Console.WriteLine("Win32_ComputerSystem.SystemType = " + o.Properties["SystemType"].Value);
break;
}
Console.ReadKey();
}
}