|
Как получить ProductId из реестра сервера 2008? | ☑ | ||
---|---|---|---|---|
0
GreyK
11.09.12
✎
18:54
|
Работал вот такой код на ХР:
WshShell = CreateObject("WScript.Shell"); ProductId=СтрЗаменить(WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ProductId"),"-",""); Но Server 2008 не хочет читать ProductId примерно таким-же скриптаом из ветки: WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Registration") Есть возможность обойти эту фичу S2008? |
|||
1
smaharbA
11.09.12
✎
18:56
|
это не продуктид
|
|||
2
prog2012
11.09.12
✎
18:57
|
кмсактиватор?
|
|||
3
smaharbA
11.09.12
✎
19:02
|
Windows NT
|
|||
4
GreyK
11.09.12
✎
19:08
|
(3) Оттудда тоже не читается, какая-то защита срабатывает.
|
|||
5
GreyK
11.09.12
✎
19:12
|
(2) Нужно стандартными средстави получить уникальный код винды.
|
|||
6
smaharbA
11.09.12
✎
22:17
|
(5) не так получают код
версия х64 ? |
|||
7
GreyK
12.09.12
✎
11:16
|
(6) Да.
|
|||
8
GreyK
12.09.12
✎
18:14
|
Кто может подсказать по ошибке в модуле:
WshShell = CreateObject("WScript.Shell"); Попытка ProductId=СтрЗаменить(WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ProductId"),"-",""); Исключение WbemScripting = CreateObject("WbemScripting.SWbemNamedValueSet"); WbemScripting.Add("__ProviderArchitecture", 64); //WbemScripting.Add("__RequiredArchitecture", 1); locator = CreateObject("Wbemscripting.SWbemLocator"); oReg = Locator.ConnectServer("", "root\default", "", "", , , , WbemScripting).Get("StdRegProv"); oInParams = oReg.Methods_("GetStringValue").InParameters; oInParams.hDefKey = "HKEY_LOCAL_MACHINE"; oInParams.sSubKeyName = "\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion"; oInParams.sValueName = "ProductId"; oOutParams = oReg.ExecMethod_("GetStringValue", oInParams, , WbemScripting); ProductId=СтрЗаменить(oOutParams.sValue,"-",""); КонецПопытки; Текст ошибки: "oReg = Locator.ConnectServer("", "root\default", "", "", , , , WbemScripting).Get("StdRegProv"); {Глобальный модуль(652)}: SWbemLocator: Invalid parameter" |
|||
9
smaharbA
12.09.12
✎
18:55
|
Тебе нужен ключь или ид ?
|
|||
10
smaharbA
12.09.12
✎
18:57
|
а так, достаточно
oReg = Locator.ConnectServer(".", "root\default", "", "").Get("StdRegProv"); |
|||
11
smaharbA
12.09.12
✎
18:57
|
вернее
oReg = Locator.ConnectServer("", "root\default").Get("StdRegProv"); |
|||
12
GreyK
12.09.12
✎
19:04
|
(9) Нужен ИД.
|
|||
13
smaharbA
12.09.12
✎
19:19
|
|
|||
14
smaharbA
12.09.12
✎
19:20
|
многобайтовые значения так же просто получить, можно сразу определять тип значения и преобразовывать в строку или в список значений
|
|||
15
GreyK
12.09.12
✎
19:32
|
(13) Спасибо!
|
|||
16
smaharbA
12.09.12
✎
19:45
|
(15) можно получить и ключь виндуза и офиса
|
|||
17
Jaap Vduul
12.09.12
✎
19:48
|
select SerialNumber from Win32_OperatingSystem
|
|||
18
GreyK
12.09.12
✎
19:49
|
(16) Это в мою зажачу не входит, нужно только узнать ту операционку которая может выполнять процедуру.
С праздником! |
|||
19
smaharbA
12.09.12
✎
20:13
|
(17) можно и так автору, но тогда нужна будет обертка
|
|||
20
GreyK
13.09.12
✎
06:11
|
Итого:
scrptCtrl=createobject("MSScriptControl.ScriptControl"); scrptCtrl.language="vbscript"; scrptCtrl.addcode("Function GeProductID() |Const HKLM = &h80000002 |Set objCtx = CreateObject(""WbemScripting.SWbemNamedValueSet"") |objCtx.Add ""__ProviderArchitecture"", 64 |objCtx.Add ""__RequiredArchitecture"", TRUE |Set objLocator = CreateObject(""Wbemscripting.SWbemLocator"") |Set objServices = objLocator.ConnectServer("""",""root\default"","""","""",,,,objCtx) |Set objStdRegProv = objServices.Get(""StdRegProv"") |Set Inparams = objStdRegProv.Methods_(""GetStringValue"").Inparameters |Inparams.Hdefkey = HKLM |Inparams.Ssubkeyname = ""Software\Microsoft\Windows NT\CurrentVersion\"" |Inparams.Svaluename = ""ProductId"" |GeProductID = objStdRegProv.ExecMethod_(""GetStringValue"", Inparams,,objCtx).SValue |End Function"); ProductId = scrptCtrl.run("GeProductID"); |
|||
21
smaharbA
13.09.12
✎
06:26
|
(20) а нафига тут обертка ?
|
|||
22
GreyK
13.09.12
✎
06:43
|
(21) Надоело бороться с утановкой этих двух параметров :)
|objCtx.Add ""__ProviderArchitecture"", 64 |objCtx.Add ""__RequiredArchitecture"", TRUE |
|||
23
smaharbA
13.09.12
✎
06:45
|
ясно, интеджер и булево
|
|||
24
smaharbA
13.09.12
✎
06:45
|
да не всегда могут быть переданы из 77
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |