2017-11-16 6 views
1

여러 장치에서 실행되는 WEC7 응용 프로그램의 설치 관리자를 작성합니다. 각 장치는 아키텍처가 다르며 OS 버전도 다를 수 있습니다. 이 응용 프로그램은 역사적인 이유로 C++로 작성되었습니다. 즉, 응용 프로그램은 각 OS/아키텍처 버전에 대해 컴파일됩니다. 설치 프로그램 패키지에는 모든 버전이 리소스로 있습니다. 설치하기 만하면됩니다. OS 버전은 System.Environment.OSVersion.Version.Major에있을 수 있지만 ARM 아키텍처와 x86 아키텍처의 차이점을 알 수는 없습니다.C#으로 Windows-CE에서 실행중인 아키텍처를 어떻게 알 수 있습니까?

가능한 솔루션은 내가 포함으로 실행 한 :

SYSTEM_INFO si; 
GetSystemInfo(&si); 
return si.wProcessorArchitecture; 

그러나,이 C++ 코드 때문에 동일한 문제가 앓고, 즉 두 개의 컴파일 된 버전 (ARM & 86) 당신은 알 필요가있는 로드하려면 ...하지만 그 이유는 코드를 실행하려면.

나는 또한 System.Management을 조사했으나 찾을 수있는 WEC7에서는 사용할 수 없습니다.

제안 사항?

+0

[여기] (https://stackoverflow.com/a/16996176/369) – Blorgbeard

+0

재미있는 해킹을 작동 할 수 있습니다 역겨운 해킹입니다. 그러나 IE10을 사용할 수 있다고 가정합니다. 필자의 상황 (임베디드 장치)을 감안할 때 IE10을 설치 한 사람이 아무도 없다고 합리적으로 확신합니다. 포인터 고마워. – user8447050

답변

0

당신은 항상 P /는 GetSystemInfo 전화를 호출 할 수있다 :

[DllImport("coredll.dll")] 
public static extern void GetSystemInfo(out SystemInfo info); 

public enum ProcessorArchitecture 
{ 
    Intel = 0, 
    Mips = 1, 
    Shx = 4, 
    Arm = 5, 
    Unknown = 0xFFFF, 
} 

[StructLayout(LayoutKind.Sequential)] 
public struct SystemInfo 
{ 
    public ProcessorArchitecture ProcessorArchitecture; 
    public uint PageSize; 
    public IntPtr MinimumApplicationAddress; 
    public IntPtr MaximumApplicationAddress; 
    public IntPtr ActiveProcessorMask; 
    public uint NumberOfProcessors; 
    public uint ProcessorType; 
    public uint AllocationGranularity; 
    public ushort ProcessorLevel; 
    public ushort ProcessorRevision; 
} 
+0

감사합니다, 이것이 내가 필요한 것입니다. – user8447050

관련 문제