0


0

ここでサポートされているすべてのプロセッサアーキテクチャの列挙があります。

実行環境に対応するものを特定する方法はありますか? System.Reflection.Assembly.GetExecutingAssembly()。ProcessorArchitectureはMSILを返します - 明らかに間違っています。

編集:Bojan Resnikは答えを投稿してそれを削除した。 私が得た部分的な痕跡からいくらかの説明が必要であることを私は見ます。

アセンブリは複数のアーキテクチャで実行する必要があり、実行中のプロセスがどのアセンブリ命令を受け入れるかに基づいてさまざまな処理を実行します。 基本的に、どのバージョンのネイティブDLLをロードするかを選択する必要があります。 アーキテクチャごとに1つずつあります。

2 Answer


1


P / GetSystemInfoを呼び出すことは、.NETからは簡単で、WMIよりもはるかに軽量です。 また、プロセスから見たアーキテクチャを返すので、x64マシンではWOWプロセスはx86を認識し、ネイティブプロセスはx64を認識します。


0


これがあなたが試したいと思うかもしれないいくつかのWMI設定です。 現時点では64ビットシステムは便利ではありませんが、確認は簡単なはずです。 ソースコードは以下の通りです。 あなたが呼び出しの組み合わせを使用しなければならなくなるかもしれないことに注意してください(例: 1つはすごいを見つけるためのもの、もう1つはネイティブ32を見つけるためのもの対 64など)。

また、http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/b1cfef99-5247-47c5-93d4-31eb6849df48をご覧ください。

システムを使用する。 System.Managementを使用します。クラスProgram {static void Main(string [] args){foreach(新しいManagementClassのManagementBaseObject( "Win32_OperatingSystem")。GetInstances()){Console.WriteLine( "Win32_OperatingSystem.OSArchitecture =" o.Properties ["OSArchitecture"]。値);ブレーク; foreach(新しいManagementClass( "Win32_ComputerSystem"のManagementBaseObject o)。GetInstances()){Console.WriteLine( "Win32_ComputerSystem.SystemType =" o.Properties ["SystemType"]。Value);}ブレーク; Console.ReadKey(); }}