Вопрос

Need to implement per-user registration of a COM co-class by adding registry entries to the HKCU registry hive (XP SP3, Windows 7, Windows 8). What is the minimal set of required registry entries to create an object instance by calling the VBScript CreateObject function?

UPD: VBScript implementation

Sub RegisterComObject(Path, ProgId, ClsId)
    Dim Shell
    Set Shell = WScript.CreateObject("WScript.Shell")

    Shell.RegWrite "HKCU\Software\Classes\" & ProgId & "\", ""
    Shell.RegWrite "HKCU\Software\Classes\" & ProgId & "\CLSID\", ClsId

    Shell.RegWrite "HKCU\Software\Classes\CLSID\" & ClsId & "\", ""
    Shell.RegWrite "HKCU\Software\Classes\CLSID\" & ClsId & "\InprocServer32\", Path
    Shell.RegWrite "HKCU\Software\Classes\CLSID\" & ClsId & "\ProgID\", ProgID
End Sub

Sub UnregisterComObject(ProgId, ClsId)
    Dim Shell
    Set Shell = WScript.CreateObject("WScript.Shell")

    Shell.RegDelete "HKCU\Software\Classes\CLSID\" & ClsId & "\InprocServer32\"
    Shell.RegDelete "HKCU\Software\Classes\CLSID\" & ClsId & "\ProgId\"
    Shell.RegDelete "HKCU\Software\Classes\CLSID\" & ClsId & "\"

    Shell.RegDelete "HKCU\Software\Classes\" & ProgId & "\CLSID\"
    Shell.RegDelete "HKCU\Software\Classes\" & ProgId & "\"
End Sub
Это было полезно?

Решение

You need:

  1. HKEY_CURRENT_USER\Software\Classes\CLSID\{your-CLSID-goes-here} branch with subkey InprocServer32 (or, LocalServer32) with its regular syntax
  2. HKEY_CURRENT_USER\Software\Classes\{your-ProgID-goes-here} to map your ProgID to CLSID in order for CreateObject to succeed.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top