Регистрация в совместном классе COM для каждого пользователя

Необходимо реализовать регистрацию совместного класса COM для каждого пользователя путем добавления записей реестра в куст реестра HKCU (XP SP3, Windows 7, Windows 8). Каков минимальный набор необходимых записей реестра для создания экземпляра объекта путем вызова функции VBScript CreateObject?

UPD: реализация VBScript.

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

person DmitryAB    schedule 26.12.2013    source источник
comment
Точно такой же минимум, который вам нужен для HKLM.   -  person Hans Passant    schedule 26.12.2013


Ответы (1)


Тебе нужно:

  1. HKEY_CURRENT_USER\Software\Classes\CLSID\{your-CLSID-goes-here} ветвь с подразделом InprocServer32 (или LocalServer32) с обычный синтаксис
  2. HKEY_CURRENT_USER\Software\Classes\{your-ProgID-goes-here}, чтобы сопоставить ваши ProgID с CLSID, чтобы CreateObject удалось добиться успеха.
person Roman R.    schedule 26.12.2013
comment
Спасибо. Но инструмент ProcessMonitor показывает, что wscript.exe не пытается найти мой ProgID в HCKU. Он начинается с HKEY_CLASSES_ROOT, затем терпит неудачу и выдает ошибку 800A01AD. Виндовс 7 х64. - person DmitryAB; 26.12.2013
comment
А ваша wscript версия 32 или 64-битная? То есть это C:\Windows\system32\wcsript.exe или C:\Windows\syswow64\wcsript.exe? - person Roman R.; 26.12.2013
comment
Извините :) Я тестировал 64-битный wscript. Все работает отлично. - person DmitryAB; 26.12.2013