Oto parę funkcji VBScript na podstawie odpowiedzi bardzo zwięzły przez @Bruno:
Function Is32BitOS()
If GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth _
= 32 Then
Is32BitOS = True
Else
Is32BitOS = False
End If
End Function
Function Is64BitOS()
If GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth _
= 64 Then
Is64BitOS = True
Else
Is64BitOS = False
End If
End Function
UPDATE: Za radą od @ Ekkehard.Horner , te dwie funkcje mogą być napisane bardziej zwięźle using single-line syntax w następujący sposób:
Function Is32BitOS() : Is32BitOS = (GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth = 32) : End Function
Function Is64BitOS() : Is64BitOS = (GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth = 64) : End Function
(Należy pamiętać, że nawiasy otaczające warunek GetObject(...) = 32
nie są konieczne, ale uważam, że dodają one przejrzystości w odniesieniu do pierwszeństwa operatora. Należy również zauważyć, że składnia jednoliniowy stosowane w zmienionych wdrożeń unika używania If/Then
konstruktu)
UPDATE 2: Per dodatkowej informacji zwrotnej od @ Ekkehard.Horner, niektórzy mogą uznać, że te dodatkowo poprawione implementacje Oferujemy zarówno zwięzłość i zwiększoną czytelność:
Function Is32BitOS()
Const Path = "winmgmts:root\cimv2:Win32_Processor='cpu0'"
Is32BitOS = (GetObject(Path).AddressWidth = 32)
End Function
Function Is64BitOS()
Const Path = "winmgmts:root\cimv2:Win32_Processor='cpu0'"
Is64BitOS = (GetObject(Path).AddressWidth = 64)
End Function
Nie, myślę, że chce się dowiedzieć, czy działa na 32- lub 64-bitowym systemie operacyjnym. W związku z tym duplikat http://stackoverflow.com/questions/191873 – Treb
możliwy duplikat [Ustalanie 64-bitowych vs. 32-bitowych Windows] (http://stackoverflow.com/questions/191873/determining-64-bit- vs-32-bitowe-okna) – Treb
@ Treb: Nie ma odpowiedzi VBScript. Po drugie, prawdopodobnie jest to duplikat http://stackoverflow.com/questions/556283/how-do-i-check-if-wscript-cscript-runs-on-x64-host-os – Helen