Как прочитать значение (по умолчанию) из реестра в VBScript? - PullRequest
0 голосов
/ 12 января 2012

в реестре - это ключ, который имеет только значение, значение (Default).Эта запись по умолчанию имеет значение, что мне нужно.Я нашел скрипт для чтения значений реестра.

const HKEY_LOCAL_MACHINE = &H80000002
const RegistryLocation   = "SOFTWARE\SAP BusinessObjects\Suite XI 4.0\Xcelsius\Keycodes"

ReadRegistry( RegistryLocation )

Function ReadRegistry( RegistryLocation )

strComputer = "."

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")

oReg.EnumValues HKEY_LOCAL_MACHINE, RegistryLocation, arrValueNames, arrValueTypes

    Wscript.Echo "Key Name: " & arrValueNames(0)
'RegKeyName = arrValueNames(0)

oReg.GetStringValue HKEY_LOCAL_MACHINE, RegistryLocation, arrValueNames(0), strValue
Wscript.Echo "Value: " & strValue
'RegKeyValue = strValue

'ChangeRegistryValue RegistryLocation, arrValueNames(i), NewSerial

End Function 'ReadRegistry

Он отлично работает, если есть больше ключей.Если существует только значение (по умолчанию), я получаю ошибку несоответствия типов.Если я создаю новый ключ, то я могу прочитать значение записи по умолчанию.

Поэтому мой вопрос: что я делаю неправильно и как мне это сделать?

Спасибо!

1 Ответ

0 голосов
/ 12 января 2012

Кажется, что у VBScript есть проблемы с получением массива ValueNames, когда есть только одно значение с пустым именем.Вы можете прочитать значение по умолчанию без перечисления имен значений - просто укажите пустую строку для имени значения:

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
oReg.GetStringValue HKEY_LOCAL_MACHINE, RegistryLocation, "", strValue
Wscript.Echo "Value: " & strValue

Это работает в обоих случаях: когда значение по умолчанию является единственным значением и когда больше значений подданный ключ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...