سؤال

هناك عداد لجميع هياكل المعالج المدعومة هنا: http://msdn.microsoft.com/en-us/library/system.reflection.processorarchitecture.aspx.

هل هناك أي طريقة لتحديد أي واحد يتوافق مع بيئة التشغيل؟ system.reflection.assembly.getexecutingassembly ()

تحرير: نشر Bojan Resnik إجابة وحذفها. أرى أن هناك حاجة إلى بعض التوضيح من التتبع الجزئي الذي حصلت عليه.

يجب أن تعمل الجمعية على بنية متعددة وأن تفعل أشياء مختلفة بناء على تعليمات الجمعية التي تقبل العملية قيد التشغيل. أساسا، أحتاج إلى تحديد إصدار DLL الأصلي للتحميل. لدي واحدة لكل بنية.

هل كانت مفيدة؟

المحلول

ص / استدعاء getsysteminfo. هو تافهة من .NET ووزن أخف وزنا أكثر من WMI. أيضا، تقوم بإرجاع الهندسة المعمارية كما رأيناها العملية حتى آلة X64 سترى عملية WOW X86 وسترى عملية أصلية X64.

نصائح أخرى

إليك بعض إعدادات WMI التي قد ترغب في تجربتها. ليس لدي نظام 64 بت مفيدا في الوقت الحالي، ولكن يجب أن يكون من السهل التحقق منه. شفرة المصدر أدناه. لاحظ أنه قد ينتهي الأمر بالحاجة إلى استخدام مجموعة من المكالمات (مثل واحد للعثور على نجاح باهر، آخر للعثور على 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();
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top