micneu
Goto Top

Vbscript - prüfen ob windows 32bit oder 64bit

Hallo Leute hoffe ihr könnt mir helfen.

Ich beschäftige mich mal wieder mit vbscript.
Und nun meine frage wie kann ich in vbscript prüfen ob windows in 32bit oder 64bit läuft.

gruß michael

Content-ID: 159238

Url: https://administrator.de/contentid/159238

Printed on: December 13, 2024 at 01:12 o'clock

EvilMoe
EvilMoe Jan 23, 2011 at 10:13:47 (UTC)
Goto Top
On Error Resume Next

Dim WshShell
Dim OsType

Set WshShell = CreateObject("WScript.Shell")  

OsType = WshShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE")  

If OsType = "x86" then  
wscript.echo "Windows 32bit system detected"  
elseif OsType = "AMD64" then  
wscript.echo "Windows 64bit system detected"  
end if
Erster Link in google.
micneu
micneu Jan 23, 2011 at 10:40:37 (UTC)
Goto Top
danke das ging ja schnell

gruß michael
Friemler
Friemler Jan 23, 2011 at 14:19:46 (UTC)
Goto Top
Hallo EvilMoe,

meiner Erfahrung nach funktioniert diese Methode nicht zuverlässig. Ich musste mich bei der Erstellung von Batchfiles für unser Programmiererteam mit dem Thema herumschlagen. Einige verwenden auf ihren Entwicklermaschinen 32Bit-Systeme, die anderen 64Bit-Systeme (Vista oder Win7). Aus einem Batch-Skript sollte der Compiler mit einer Projektdatei als Parameter gestartet werden. Auf 32Bit-Systemen liegt er in C:\Program Files, auf 64-Bit Systemen in C:\Program Files (x86). Dafür brauchte ich eine Unterscheidung. Auf manchen 64Bit-Systemen hatte die Variable PROCESSOR_ARCHITECTURE trotzdem den Wert x86...

Zuverlässig hat folgende Abfrage funktioniert:
if "%ProgramFiles(x86)%" neq "" (  
  set "Programs=C:\Program Files (x86)"  
) else (
  set "Programs=C:\Program Files"  
)

@micneu:
Prüfe die Umgebungsvariablen auf die Existenz einer Variablen ProgramFiles(x86), wenn sie existiert bist Du auf einem 64Bit-System, wenn nicht auf einem 32Bit-System.

Könnte so gehen:
Set WshShell = WScript.CreateObject("WScript.Shell")  
Set WshSysEnv = WshShell.Environment("PROCESS")  

If WshSysEnv("ProgramFiles(x86)") = "" Then  
  OSType = "32Bit"  
Else
  OSType = "64Bit"  
End If

WScript.Echo OSType
Oder per WMI-Abfrage:
strComputer = "."  
Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")  
Set colOSs = objWMI.ExecQuery("Select * from Win32_OperatingSystem")  

For Each OS in colOSs 
  OSType = OS.OSArchitecture
Next

WScript.Echo OSType
Ergebnis: 32-Bit oder 64-Bit

Gruß
Friemler