powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
9 сообщений из 9, страница 1 из 1
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
    #35677710
Valery Chesnokov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задался делать проверку, установлен ли на машине .Net Framework 2.0.
Делаю это средствами .vbs скрипта, который всё определяет, но если .Net 2.0 отсутствует, то хочу предложить пользователю открыть страницу сайта Microsoft для скачивания .Net. Их две - x86 и x64 версии.

Вопрос - как скрипт-средствами (WSH, WMI и пр.) узнать тип ОС - x86 или x64-bit стоит система?
Тип ОС, не процессора, на 64-bit CPU может быть x86 ОС.
Сейчас часть кода .vbs скрипта такая:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Sub MicrosoftNETFrameworkNotFound
	BtnCode = MsgBox("Требуемая программная платформа: Microsoft .NET Framework 2.0, не найдена." & VbCrLf & "Установите Microsoft .NET Framework 2.0 и заново запустите установку." & VbCrLf & VbCrLf & "Открыть веб страницу Microsoft для скачивания .Net 2.0?", vbOKCancel + vbExclamation, TITLE)

	If (BtnCode = vbOK) Then
		If IsOSx64 Then
			' x64
			WshShell.Run NetUrlx64
		Else
			' x86
			WshShell.Run NetUrlx86
		End If
	End If

	WScript.Quit (- 1 )
End Sub

Function IsOSx64()
	Dim bISx64, objWMIService, colItems, objItem
	bISx64 = False

	Set objWMIService = GetObject("winmgmts:\\" & "." & "\root\CIMV2") 
	' Win32_OperatingSystem Class: http://msdn.microsoft.com/en-us/library/aa394239(VS.85).aspx
	Set colItems = objWMIService.ExecQuery( _
	    "SELECT * FROM Win32_OperatingSystem",,48) 

	For Each objItem in colItems 
		' MsgBox objItem.Caption ' OSType & ", " & objItem.ProductType  & ", " & Version

		If (Instr( 1 , objItem.Caption, "x64") >  0 ) Then
			bISx64 = True
			Exit For
		End If
	Next

	IsOSx64 = bISx64
End Function
Однако проверка показала, что свойство Caption класса WMI Win32_OperatingSystem содержит в описании ОС фразу "x64" на Windows Server 2003 x64, но Vista x64 просто пишет "Windows Vista Ultimate", забывая сказать, что она x64, мать её..
Перерыл руководство по WMI ( http://msdn.microsoft.com/en-us/library/aa394479(VS.85).aspx , http://msdn.microsoft.com/en-us/library/aa394241(VS.85).aspx , http://msdn.microsoft.com/en-us/library/aa387937(VS.85).aspx и пр.) - ничего об этом нет. Хотя та же грёбаная Vista пишет в окне о системе - System Type: 64-bit Operating System.

Как получить скриптом разрядность ОС, кто знает?

Yours sincerely,
Valery Chesnokov
chesnokov.fl34.ru
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
    #37739938
kas78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
msgbox is64x

function Is64x()
dim strKeyOs
dim sRazr

Set WshShell = CreateObject("WScript.Shell")
Set WshShellApp = CreateObject("Shell.Application")
strKeyOs = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE"
Is64x=False
sRazr=WshShell.RegRead (strKeyOs)
if (Instr(1, sRazr, "64") > 0) Then Is64x=true
end function
...
Рейтинг: 0 / 0
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
    #38049513
polly5315
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
класс Win32_OperatingSystem свойство OSArchitecture
...
Рейтинг: 0 / 0
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
    #38049881
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
Dim WS As Object
Set WS = CreateObject("WScript.Shell")
MsgBox WS.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%")
...
Рейтинг: 0 / 0
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
    #38049886
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или так:
Код: vbnet
1.
MsgBox CreateObject("WScript.Shell").Environment("System")("PROCESSOR_ARCHITECTURE")
...
Рейтинг: 0 / 0
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
    #38049888
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не дочитал сначала, если ОС а не процессора, то решение такое , но API в WSH не вызовешь без врапперов. Как вариант проверять существование папки SysWow64 в системной директории - это если по простому
...
Рейтинг: 0 / 0
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
    #38051098
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
set proc

ws2k3 x64:
Код: sql
1.
2.
3.
4.
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=EM64T Family 15 Model 4 Stepping 1, GenuineIntel
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0401

ws2k3 x86:
Код: sql
1.
2.
3.
4.
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Model 2 Stepping 5, GenuineIntel
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0205

Только не
...
Рейтинг: 0 / 0
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
    #38051100
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovТолько не
...
Рейтинг: 0 / 0
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
    #38067844
gora3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P = "x64"
If WSS.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%") = "x86" AND _
WSS.ExpandEnvironmentStrings("%PROCESSOR_ARCHITEW6432%") = "%PROCESSOR_ARCHITEW6432%" Then P = "x86"
MsgBox P
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]