ओएस आर्किटेक्चर को निर्धारित करने का यह एक अच्छा तरीका है?

चूंकि WMI क्लास Win32_OperatingSystem में केवल Windows Vista में OSArchitecture शामिल है, इसलिए मैंने रजिस्ट्री का उपयोग करके एक विधि को तुरंत लिखने और निर्धारित करने के लिए लिखा है कि वर्तमान सिस्टम 32 या 64 बिट सिस्टम है या नहीं।

private Boolean is64BitOperatingSystem()
{
    RegistryKey localEnvironment = Registry.LocalMachine.OpenSubKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment");
    String processorArchitecture = (String) localEnvironment.GetValue("PROCESSOR_ARCHITECTURE");

    if (processorArchitecture.Equals("x86")) {
        return false;
    }
    else {
        return true;
    }
}

यह अब तक हमारे लिए बहुत अच्छा काम कर रहा है, लेकिन मुझे यकीन नहीं है कि मुझे रजिस्ट्री के माध्यम से कितना देखना पसंद है। क्या यह एक सुंदर मानक अभ्यास है या क्या कोई बेहतर तरीका है?

Edit: Wow, that code looks a lot prettier in the preview. I'll consider linking to a pastebin or something, next time.

0
ro fr bn

4 उत्तर

रजिस्ट्री में देखना पूरी तरह से मान्य है, जब तक आप यह सुनिश्चित कर सकें कि एप्लिकेशन के उपयोगकर्ता को हमेशा आपकी आवश्यकता के अनुसार पहुंच होगी।

0
जोड़ा

.NET के तहत 64-बिट के लिए परीक्षण करने का सबसे आसान तरीका IntPtr.Size के मान की जांच करना है।

मेरा मानना ​​है कि IntPtr.Size का मान 32 बिट एप के लिए 4 है जो वाह के तहत चल रहा है, है ना?

Edit: @Edit: Yeah. :)

0
जोड़ा

रेमंड कैन्स समाधान पर एक नज़र डालें:

प्रोग्रामेटिक रूप से कैसे पता लगाएं कि आप 64-बिट विंडोज़ पर चल रहे हैं

और यहां .NET के लिए पिनवोक है:

IsWow64Process (kernel32)

Update: I'd take issue with checking for 'x86'. Who's to say what intel's or AMD's next 32 bit processor may be designated as. The probability is low but it is a risk. You should ask the OS to determine this via the correct API's, not by querying what could be a OS version/platform specific value that may be considered opaque to the outside world. Ask yourself the questions, 1 - is the registry entry concerned properly documented by MS, 2 - If it is do they provide a definitive list of possible values that is guaranteed to permit you as a developer to make the informed decision between whether you are running 32 bit or 64 bit. If the answer is no, then call the API's, yeah it's a but more long winded but it is documented and definitive.

0
जोड़ा

.NET के तहत 64-बिट के लिए परीक्षण करने का सबसे आसान तरीका IntPtr.Size के मान की जांच करना है।

संपादित करें: दोह! यह आपको बताएगा कि वर्तमान प्रक्रिया 64-बिट है, न कि ओएस पूरी तरह से। माफ़ कीजिये!

0
जोड़ा