powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как определить версию установленного Сервис-Пака ?
11 сообщений из 11, страница 1 из 1
Как определить версию установленного Сервис-Пака ?
    #36346496
Задача: написать инсталлятор для одной хитрой програмулины.
Сия програмулина ставиться только на Виндовс XP SP3. Да еще и требует Net.Framework версии не ниже 3.5
Соответственно, необходимо определить какой сервис-пак установлен на машине, где сей инсталлятор будет запускаться. Как бы сие реализовать? Понятно, что нужно смотреть реестр. Однако, где именно?
Вторая задача - определить какая версия фреймворка на машине стоит ( и стоит ли вообще). В случае если параметры не годяться - инстялляция прерывается с соответствующим сообщением.
Кто подскажет...
...
Рейтинг: 0 / 0
Как определить версию установленного Сервис-Пака ?
    #36346518
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Шевченко,

А инсталлятор на Visual Basic будет писаться?
...
Рейтинг: 0 / 0
Как определить версию установленного Сервис-Пака ?
    #36346526
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На WSH:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
' List Operating System and Service Pack Information

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
 
Set colOSes = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each objOS in colOSes
  Wscript.Echo "Computer Name: " & objOS.CSName
  Wscript.Echo "Caption: " & objOS.Caption 'Name
  Wscript.Echo "Version: " & objOS.Version 'Version & build
  Wscript.Echo "Build Number: " & objOS.BuildNumber 'Build
  Wscript.Echo "Build Type: " & objOS.BuildType
  Wscript.Echo "OS Type: " & objOS.OSType
  Wscript.Echo "Other Type Description: " & objOS.OtherTypeDescription
  WScript.Echo "Service Pack: " & objOS.ServicePackMajorVersion & "." & _
   objOS.ServicePackMinorVersion
Next
...
Рейтинг: 0 / 0
Как определить версию установленного Сервис-Пака ?
    #36346537
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Примеры скриптов по работе с реестром: http://www.vbsedit.com/scripts/os/registry/default.asp
...
Рейтинг: 0 / 0
Как определить версию установленного Сервис-Пака ?
    #36346598
авторА инсталлятор на Visual Basic будет писаться?
Да. На VB6. Скрипты не спасают, нужно именно средствами VB6
...
Рейтинг: 0 / 0
Как определить версию установленного Сервис-Пака ?
    #36347192
bac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Public Function getOSVersion() As String
Dim objWMIService As Object
Dim colOperatingSystems As Object
Dim objOperatingSystem As Object

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& ".\root\cimv2")

Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")

For Each objOperatingSystem In colOperatingSystems
getOSVersion = objOperatingSystem.Caption & " " & _
objOperatingSystem.Version
Next
End Function
...
Рейтинг: 0 / 0
Как определить версию установленного Сервис-Пака ?
    #36347534
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если годится то, что привёл bac , то вполне можно брать нужные куски из wsh-скриптов,
например этот:
Код: plaintext
1.
WScript.Echo "Service Pack: " & objOS.ServicePackMajorVersion & "." & _
   objOS.ServicePackMinorVersion
...
Рейтинг: 0 / 0
Как определить версию установленного Сервис-Пака ?
    #36348731
Спасибо. То что нужно. Работает.
...
Рейтинг: 0 / 0
Как определить версию установленного Сервис-Пака ?
    #36349272
Остался вопрос по определению версии установленного Net.Framework
...
Рейтинг: 0 / 0
Как определить версию установленного Сервис-Пака ?
    #36349994
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мой ключ на ХР сп3:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
[HKEY_CLASSES_ROOT\CLSID\{04B1A7E3- 4379 -39D2-B003-57AF524D9AC5}\InprocServer32]
@="C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322\\mscormmc.dll"
"ThreadingModel"="Both"
"Class"="Microsoft.CLRAdmin.CCommandHistory"
"Assembly"="mscorcfg, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
"RuntimeVersion"="v1.1.4322"

ИМХО вполне можно по аналогии с другими скриптами с http://www.vbsedit.com/scripts/os/registry/default.asp версию вытянуть (если она у всех лежит в этом ключе, конечно).
...
Рейтинг: 0 / 0
Как определить версию установленного Сервис-Пака ?
    #36351278
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю, насколько это подверждает, что такая версия установлена сейчас, но что на машине она была, это видно.
Проверил на XP и Win7.
Вначале искал следы в ветке Uninstall, но там есть разница между XP и Win7.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
' List Registry Subkeys
Dim flag3
Dim flag2
Dim flag11

Const HKEY_LOCAL_MACHINE = &H80000002
 
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
 
strKeyPath = "SOFTWARE\Microsoft\.NETFramework"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
 
For Each subkey In arrSubKeys
   if InStr( 1 , subkey, "v3.0", vbTextCompare) then flag3 = true 
   if InStr( 1 , subkey, "v2.0", vbTextCompare) then flag2 = true 
   if InStr( 1 , subkey, "v1.1", vbTextCompare) then flag11 = true 
Next

if flag3 then msgbox "3.0 Installed"
if flag2 then msgbox "2.0 Installed"
if flag11 then msgbox "1.1 Installed"
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как определить версию установленного Сервис-Пака ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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