2013-12-26 5 views
1

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

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 
+0

Точный минимальный уровень, необходимый для HKLM. –

ответ

3

Понадобится:

  1. HKEY_CURRENT_USER\Software\Classes\CLSID\{your-CLSID-goes-here} ветвь с подразделом InprocServer32 (или, LocalServer32) с its regular syntax
  2. HKEY_CURRENT_USER\Software\Classes\{your-ProgID-goes-here} для отображения вашего ProgID в CLSID для того, чтобы CreateObject преуспеть.
+0

Спасибо. Но инструмент ProcessMonitor показывает, что wscript.exe не пытается найти мой ProgID в HCKU. Он начинается с HKEY_CLASSES_ROOT, затем сбой и выдает ошибку 800A01AD. Windows 7 x64. – DmitryAB

+0

И ваша версия 'wscript' 32 или 64-битная? То есть, это 'C: \ Windows \ system32 \ wcsript.exe' или' C: \ Windows \ syswow64 \ wcsript.exe'? –

+0

Извините :) Я протестировал с 64-битным wscript. Все работает отлично. – DmitryAB

Смежные вопросы