.NET Frameworkは、プロセッサアーキテクチャを実行し得ます
-
16-09-2019 - |
質問
ここでは、サポートされているすべてのプロセッサ・アーキテクチャの列挙型があります: http://msdn.microsoft.com/en-us/library/system.reflection.processorarchitecture.aspxする
を実行環境に対応するかを判断する方法はありますか? 。System.Reflection.Assembly.GetExecutingAssembly()ProcessorArchitectureは、MSILを返します - 明らかに間違っ
。EDIT:ボヤンRESNIKが答えを投稿し、それを削除しました。私はいくつかの明確化が私が得た部分的なトレースから必要とされていることがわかります。
アセンブリは、複数のアーキテクチャ上で実行され、実行中のプロセスが受け入れる何組み立て説明書に基づいて異なることを行う必要があります。基本的に、私はロードするためにネイティブのDLLのバージョンを選択する必要があります。私は、各アーキテクチャのための1つを持っています。
解決
P /呼び出し GetSystemInfo の.NETから自明であり、はるかに軽量でありますWMIよりも体重。 WOWプロセスは、x86が表示され、ネイティブプロセスがx64のを見ることができますのx64マシン上のように処理することによって見られるように、また、それがアーキテクチャを返します。
他のヒント
ここでは、試してみたいことがありますいくつかのWMIの設定があります。私は、現時点では便利な64ビットシステムを持っていないが、チェックするのは簡単でなければなりません。ソースコードは以下の通りです。あなたは(別のネイティブ32対64などを見つけるために、例えば1が、すごい見つけるために)呼び出しの組み合わせを使用する必要が終わる可能性があることに注意してください。
また、チェックアウト<のhref = "http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/b1cfef99-5247-47c5-93d4-31eb6849df48" のrel = "nofollowをnoreferrer" > 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();
}
}