как обойти ошибку времени выполнения VBScript для несоответствия типов; код: 800a000D

787
kdave001

Возможно, я делаю это неправильно, но я пытаюсь изменить сценарий VBScript для поиска ключа продукта Windows для поддержки поиска ключа продукта для Microsoft Office Pro. Вот код, но я бы хотел, чтобы «неизвестное» имя папки имело тот же эффект, что и подстановочный знак. Я знаю, что в VBScript фактический подстановочный знак невозможен, но что я могу сделать, чтобы вернуть значение реестра для «DigitalProductID» в сценарии без указания папки «unknown»? Или я могу изменить код где-нибудь еще?

Set WshShell = CreateObject("WScript.Shell") MsgBox ConvertToKey(WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Registration\unknown\DigitalProductId"))  Function ConvertToKey(Key) Const KeyOffset = 52 i = 28 Chars = "BCDFGHJKMPQRTVWXY2346789" Do Cur = 0 x = 14 Do Cur = Cur * 256 Cur = Key(x + KeyOffset) + Cur Key(x + KeyOffset) = (Cur \ 24) And 255 Cur = Cur Mod 24 x = x -1 Loop While x >= 0 i = i -1 KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput If (((29 - i) Mod 6) = 0) And (i <> -1) Then i = i -1 KeyOutput = "-" & KeyOutput End If Loop While i >= 0 ConvertToKey = KeyOutput End Function 
0
Вы открываете `regedit` и ищите эту« неизвестную »часть вручную, подставляете ее и запускаете скрипт? Seth 7 лет назад 0

1 ответ на вопрос

0
JosefZ

Следующий простой скрипт перечисляет подключи данного раздела реестра:

Option Explicit On Error Goto 0  Dim strLog, strComputer, objRegistry, strKeyPath, key, arrsubKeys  strLog = "" strComputer = "."  Set objRegistry = GetObject("winmgmts:!\\" _ & strComputer & "\root\default:StdRegProv")  strKeyPath = "SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Registration\" strKeyPath = "SOFTWARE\Wow6432Node\Adobe\" '''' key path for demonstration   strLog = strLog & vbNewLine & "subkeys of HKLM\" & strKeyPath  objRegistry.EnumKey HKLM, strKeyPath, arrsubKeys  If VarType( arrsubKeys) = 8204 Then For Each key In arrsubKeys strLog = strLog & vbNewLine & key Next End If  Wscript.Echo strLog Wscript.Quit  ' useful constants ' ' Registry: Braches and Corresponding Hexadecimal Values ' Const HKCR = &H80000000 'HKEY_CLASSES_ROOT Const HKCU = &H80000001 'HKEY_CURRENT_USER Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE Const HKU = &H80000003 'HKEY_USERS Const HKCC = &H80000005 'HKEY_CURRENT_CONFIG Const HKDD = &H80000006 'HKEY_DYN_DATA