Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit) / 9 сообщений из 9, страница 1 из 1
26.11.2008, 20:56
    #35677710
Valery Chesnokov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
Задался делать проверку, установлен ли на машине .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
Период между сообщениями больше года.
05.04.2012, 11:55
    #37739938
kas78
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
Код: 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
22.11.2012, 20:06
    #38049513
polly5315
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
класс Win32_OperatingSystem свойство OSArchitecture
...
Рейтинг: 0 / 0
23.11.2012, 08:42
    #38049881
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
Код: vbnet
1.
2.
3.
Dim WS As Object
Set WS = CreateObject("WScript.Shell")
MsgBox WS.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%")
...
Рейтинг: 0 / 0
23.11.2012, 08:45
    #38049886
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
или так:
Код: vbnet
1.
MsgBox CreateObject("WScript.Shell").Environment("System")("PROCESSOR_ARCHITECTURE")
...
Рейтинг: 0 / 0
23.11.2012, 08:50
    #38049888
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
не дочитал сначала, если ОС а не процессора, то решение такое , но API в WSH не вызовешь без врапперов. Как вариант проверять существование папки SysWow64 в системной директории - это если по простому
...
Рейтинг: 0 / 0
23.11.2012, 17:44
    #38051098
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
Код: 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
23.11.2012, 17:45
    #38051100
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
Basil A. SidorovТолько не
...
Рейтинг: 0 / 0
06.12.2012, 13:14
    #38067844
gora3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit)
P = "x64"
If WSS.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%") = "x86" AND _
WSS.ExpandEnvironmentStrings("%PROCESSOR_ARCHITEW6432%") = "%PROCESSOR_ARCHITEW6432%" Then P = "x86"
MsgBox P
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Скриптом (WMI, WSH) получить разрядность ОС (32 / 64-bit) / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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