VBA для проверки версии установленного программного обеспечения HKEY_LOCAL_MACHINE

Я пытаюсь проверить, какая версия Navisworks установлена ​​на компьютере пользователя. Я использовал пример из этой темы и изменил Найти ключ реестра с помощью Excel VBA

Function ReadRegistry(RootKey, Key As String, Value As String, Optional RegType As Integer = 32) As String

Dim oCtx, oLocator, oReg, oInParams, oOutParams

Set oCtx = CreateObject("WbemScripting.SWbemNamedValueSet")
oCtx.Add "__ProviderArchitecture", RegType

Set oLocator = CreateObject("Wbemscripting.SWbemLocator")
Set oReg = oLocator.ConnectServer("", "root\default", "", "", , , , oCtx).Get("StdRegProv")

Set oInParams = oReg.Methods_("GetStringValue").InParameters
oInParams.hDefKey = RootKey
oInParams.sSubKeyName = Key
oInParams.sValueName = Value

Set oOutParams = oReg.ExecMethod_("GetStringValue", oInParams, , oCtx)

ReadRegistry = oOutParams.sValue

Конечная функция

Sub NavisworksVersion()
Const HKEY_LOCAL_MACHINE = &H80000002
MsgBox ReadRegistry(HKEY_LOCAL_MACHINE, "Software\Autodesk\Navisworks API Runtime\18\Navisworks Manage", "Path")

Конец сабвуфера

Код работает до ReadRegistry в функции, где выдает ошибку Недопустимое использование Null

Любая помощь приветствуется


person Simon Biddle    schedule 30.11.2020    source источник
comment
Используйте отладчик VBA, чтобы войти в функцию, чтобы увидеть, где она выдает ошибку.   -  person Paul Ogilvie    schedule 30.11.2020
comment
Мне нужно было установить RegType на 64, а не на 32, и это работает. Хотя, как мне это сделать, чтобы проверить версию, установленную на компьютере пользователя. Взято из документации navisworks. Существует несколько способов определить, где установлен Navisworks, но рекомендуемый метод на самом деле представляет собой двухэтапный процесс. Во-первых, ключ реестра «HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\Navisworks API Runtime» содержит вложенные ключи для каждой установки продукта Navisworks, вертикальной или OEM, установленной в системе. В каждом из этих ключей есть строковое значение «Путь», которое определяет место установки продукта.   -  person Simon Biddle    schedule 01.12.2020