Hur du identifierar bitness för ett operativsystem


Introduktion


I artikeln beskrivs ett prov för allt-i-ett ramverk för kod som är tillgänglig för hämtning. I det här exemplet innehåller stegvisa instruktioner om hur du skriver Visual Basic.NET, Visual C++ .NET, Visual Basic.NET eller Visual C#-kod programmässigt ta reda på om operativsystemet på den aktuella datorn eller på en fjärransluten dator är en 64-bitars operativsystem systemet.

Information om hämtning

Klicka på länken nedan om du vill hämta detta kodexempel:


Teknisk översikt

Proverna införa två lösningar upptäcka programmässigt om du kör på en 64-bitars operativsystem eller inte.

Lösning 1. Funktionen IsWow64Process används för att kontrollera bitness för systemet körs.

Om processen som körs är en 64-bitars process, måste det aktuella operativsystemet vara en 64-bitars operativsystem.

#if defined(_WIN64)
return TRUE; // 64-bit programs run only on Win64

Om processen som körs är en 32-bitars-process, kan du använda funktionen IsWow64Process för att kontrollera om det aktuella operativsystemet är ett 64-bitars operativsystem eller inte.

#elif defined(_WIN32)
// 32-bit programs run on both 32-bit and 64-bit Windows
BOOL f64bitOS = FALSE;
return ((DoesWin32MethodExist(L"kernel32.dll", "IsWow64Process") &&
IsWow64Process(GetCurrentProcess(), &f64bitOS)) && f64bitOS);


Lösning 2. Använd egenskapen AddressWidth för WMI-klassen Win32_Processor fråga bitness för lokalt eller fjärr-system.

Egenskapen AddressWidth för WMI-klassen Win32_Processor avgör processorns aktuella arbetsläget. På ett 32-bitars operativsystem skulle Win32_Processor.AddressWidth vara 32. Win32_Processor.AddressWidth skulle vara 64 på ett 64-bitars operativsystem.

Egenskapen OSArchitecture för WMI-klassen Win32_OperatingSystem vet också bitness för OS, men egenskapen är endast tillgänglig i Windows Vista och senare operativsystem.


Observeraför mer information om hur du skapar exempelprogrammet och hur du distribuerar det här exempelprogrammet finns i filen Readme.txt, som ingår i paketet.

Kategori teknik

  • Windows Base

Språk

Detta kodexempel innehåller följande programmeringsspråk:

SpråkNamn på projekt
Visual C++CppCheckOSBitness
Visual C#CSCheckOSBitness
Visual Basic.NETVBCheckOSBitness

Förutsättningar

  • Det här exempelprogrammet skapades med hjälp av Microsoft Visual Studio 2008 Service Pack 1 installerat.


Mer Information


Vad är en allt-i-ett ramverk för kod?

Allt-i-ett ramverk för kod visar utvecklingstekniker för de flesta Microsoft med hjälp av kodexemplen i olika programmeringsspråk. Varje exempel är noggrant valt består och dokumenterats om du vill visa ett vanligt scenario för koden. Mer information om allt-i-ett ramverk för kod finns på följande webbplats:
http://1code.codeplex.com

Hur du hittar fler allt-i-ett ramverk för kod prover

Du behöver bara klicka på länken nedan om du vill hitta mer allt-i-ett ramverk för kod prover:
http://support.microsoft.com/gp/gp_kbcodefx

Referenser


Hur du identifierar programmässigt om du kör på 64-bitars Windows
http://blogs.msdn.com/oldnewthing/archive/2005/02/01/364563.aspx