none
Список зарегистрированных библиотек Windows RRS feed

  • Вопрос

  • Вопрос такой: как средствами WSH (+WMI / +ActiveX) получить список зарегистрированных в системе библиотек, с путями их нахождения? 
    27 октября 2008 г. 16:29

Ответы

  • Можно таким способом:

     

    Code Snippet

    Option Explicit

    On Error Resume Next

    Const HKEY_LOCAL_MACHINE = &H80000002
    Const TYPELIB_PATH       = "SOFTWARE\Classes\TypeLib"

    Dim strComputer : strComputer = "."

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

    Dim objSubKey
    Dim arrSubKeys
     
    objRegProv.EnumKey HKEY_LOCAL_MACHINE, TYPELIB_PATH, arrSubKeys

    For Each objSubKey In arrSubKeys
      Dim strLibraryFullName
      Dim strLibraryFileName

      Dim strLibraryPath : strLibraryPath = TYPELIB_PATH & "\" & objSubKey

      Dim objVersionKey
      Dim arrVersionKeys

      objRegProv.EnumKey HKEY_LOCAL_MACHINE, strLibraryPath, arrVersionKeys

      For Each objVersionKey In arrVersionKeys
        Dim strVersionPath : strVersionPath = strLibraryPath & "\" & objVersionKey

        Dim objVersionProperty
        Dim arrVersionProperties

        objRegProv.EnumValues HKEY_LOCAL_MACHINE, strVersionPath, arrVersionProperties

        For Each objVersionProperty In arrVersionProperties
          Select Case objVersionProperty
            Case "PrimaryInteropAssemblyName"
              objRegProv.GetStringValue HKEY_LOCAL_MACHINE, strVersionPath, objVersionProperty, strLibraryFullName
            Case Else
              objRegProv.GetStringValue HKEY_LOCAL_MACHINE, strVersionPath, objVersionProperty, strLibraryFullName
          End Select
        Next

        Dim objVersionDetails
        Dim arrVersionDetails

        objRegProv.EnumKey HKEY_LOCAL_MACHINE, strVersionPath, arrVersionDetails

        For Each objVersionDetails In arrVersionDetails
          Select Case objVersionDetails
            Case "FLAGS"
            Case "HELPDIR"
            Case Else

              Dim strVersionPlatformPath : strVersionPlatformPath = strVersionPath & "\" & objVersionDetails

              Dim objVersionPlatform
              Dim arrVersionPlatforms
     
              objRegProv.EnumKey HKEY_LOCAL_MACHINE, strVersionPlatformPath, arrVersionPlatforms
             
              For Each objVersionPlatform In arrVersionPlatforms

                objRegProv.GetStringValue HKEY_LOCAL_MACHINE, strVersionPlatformPath & "\" & objVersionPlatform, "", strLibraryFileName

                WScript.Echo strLibraryFullName & Chr(9) & objVersionPlatform & Chr(9) & strLibraryFileName

              Next
          End Select
        Next
      Next

    Next

     

     


    27 октября 2008 г. 17:52