Wie bekomme ich Informationen über den Computer? [32bit oder 64bit]

7

Wie kann ich Informationen über den Windows-Betriebssystemtyp erhalten? Ist es 32bit oder 64bit? Wie kann ich diese Informationen programmatisch erhalten?

    
gedO 26.03.2010, 14:27
quelle

8 Antworten

6

Sie müssen GetProcAddress() verwenden, um die Verfügbarkeit von % co_de zu überprüfen % Funktion zur Laufzeit, so:

%Vor%

, da diese Funktion nur für Windows-Versionen verfügbar ist, die eine 64-Bit-Version haben. Wenn Sie es als IsWow64Process() deklarieren, wird Ihre Anwendung nicht auf Windows 2000 oder Windows XP vor SP2 ausgeführt.

Bearbeiten:

Chris hat einen Kommentar zum Zwischenspeichern des Ergebnisses aus Leistungsgründen gepostet. Dies ist für diese spezielle API-Funktion möglicherweise nicht notwendig, da kernel32.dll immer da sein wird (und ich kann mir ein Programm nicht vorstellen, das sogar ohne es geladen würde), aber für andere Funktionen können Dinge sein anders. Also hier ist eine Version, die das Funktionsergebnis zwischenspeichert:

%Vor%

Das Zwischenspeichern dieses Funktionsergebnisses ist sicher, da die API-Funktion entweder vorhanden ist oder nicht, und das Ergebnis kann sich bei derselben Windows-Installation nicht ändern. Es ist sogar sicher, dies gleichzeitig von mehreren Threads aus aufzurufen, da zwei Threads, die external als WasCalled finden, beide die Funktion aufrufen, dasselbe Ergebnis an den gleichen Speicherort schreiben und erst danach False auf% co_de setzen %.

    
mghie 26.03.2010, 14:55
quelle
12
%Vor%     
kludg 26.03.2010 14:52
quelle
3

Wenn a) Sie auf Windows sind und b) Sie auf die Registrierung zugreifen können, dann sollte HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion informativ sein.

    
glenatron 26.03.2010 14:32
quelle
1

Zusätzlich zu IsWow64Process kann die API-Funktion GetNativeSystemInfo aktiviert werden von Interesse für Sie (es ist in der Einheit Windows definiert), um mehr über die CPU zu erfahren, auf der Sie sich befinden (oder Sie können assembly und CPUID verwenden).

    
PhiS 26.03.2010 16:34
quelle
0

Ich kann nicht Win32-Funktion in Delphi aufrufen.

Aber wenn Sie ein 32-Bit-Programm schreiben, können Sie die Win32-API IsWow64Process aufrufen, um zu wissen, ob Sie in einem 64-Bit-Betriebssystem arbeiten.

Natürlich, wenn Sie eine 64-Bit-Exe schreiben, wird sie nur auf 64-Bit-Windows ausgeführt, so dass Sie nicht fragen müssen.

    
Timores 26.03.2010 14:43
quelle
0

// nicht getestet, aber Sie können dies versuchen

%Vor%     
Edson Martins 18.03.2013 17:08
quelle
0

für Delphi XE +

%Vor%

Beispiel

%Vor%     
RepeatUntil 21.04.2014 10:16
quelle
0
%Vor%     
onexite 16.11.2014 09:12
quelle

Tags und Links