Модератор: gaidar
keks-n писал(а):В том то и дело, что на запись в HKLM нет прав.
keks-n писал(а):Я предполагаю сделать перехват внутри процесса функций доступа к реестру и подсовывать данные несуществующей ветки. Но это крайний вариант.
keks-n писал(а):А CoCreateInstance обязательно обратится к реестру в поисках DLL соответствующей CLSID?
keks-n писал(а):И можно ли каким либо образом создать экземпляр без неё? Она вроде бы получает как-то IClassFactory из DLL и через него создаёт объект.
Создание объекта из ActiveX-сервера (OCX, DLL) без регистрации. Тест проводился только под WinXP.
Создание объекта из ActiveX-сервера (OCX, DLL) без регистрации. Тест проводился только под WinXP.
keks-n
keks-n
keks-n писал(а):Собственно вопрос: Как?
RegsvrEx
Регистратор COM(OLE,ActivX)-компонентов, альтернатива regsvr32.
В дополнение к возможностям regsvr32 позволяет зарегистрировать компонент
под текущим пользователем (актуально для Win2000/XP).
В этом случае для регистрации не требуются права администратора (т.к. вся
запись идет в ветку реестра текущего пользователя); однако
зарегистрированный таким образом компонент доступен только текущему
пользователю.
Для регистрации используется перекрытие ветки реестра HKEY_CLASSES_ROOT.
Эта ветка на NT+ системах фактически состоит из 2-х веток:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes - для компьютера
и
HKEY_CURRENT_USER\Software\Classes - для пользователя
содержимое которых "складывается", при чем пользовательские значения перекрывают
системные. По-умолчанию запись идет в HKLM-часть; однако с помощью
ф-ции RegOverridePredefKey можно перенаправить на другую ветку, что и делает
данный регистратор.
Командная строка полностью совместима с командной строкой regsvr32, за исключением
добавления ключа /c (который и включает режим "CURRENT_USER"). Ф-ция RegOverridePredefKey
подгужается динамически, только при необходимости, и только если если она присутствует
в системе. Если ф-ция не найдена, но ключ /c задан - то он игнорируется.
Программа тестировалась на системах 2000 и XP, но не тестировалась на NT за неимением таковой.
RegOverridePredefKey там вроде отсутствует, поэтому регистратор будет работать полностью
аналогично regsvr32.
tyomitch писал(а):Неа, вроде не должен быть.
Кто-нибудь, проверьте для интереса?
Registration-Free Activation of COM Components: A Walkthrough
Registration-free COM is a mechanism available on the Microsoft Windows XP (SP2 for .NET-based components) and Microsoft Windows Server 2003 platforms. As the name suggests, the mechanism enables easy (for example, using XCOPY) deployment of COM components to a machine without the need to register them.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="Client.exe" type="win32"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="SideBySide.X" version="1.0.0.0"/>
</dependentAssembly>
</dependency>
</assembly>
Sergeant Pepper писал(а):Без отключения UAC (User Account Control) не регистрирует (с отключенным UAC не пробовал, так как это не представляет интереса для меня)
Вернуться в Раздел для Профессионалов
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6