Не могу зарегистрировать ATL COM objects из Visual Studio
От: chygyrynsky Германия  
Дата: 26.03.10 18:32
Оценка:
Привет.

Не могу зарегистрировать ATL COM objects / DLL непосредственно из Visual Studio. С regsvr32 работает. Visual Studio запускал с 'elevated privilege', для linker указал 'per user registration'.

Среда – Windows 7, Visual Studio 2008.

Thanks
Re: Не могу зарегистрировать ATL COM objects из Visual Studi
От: bnk СССР http://unmanagedvisio.com/
Дата: 26.03.10 19:48
Оценка:
Здравствуйте, chygyrynsky, Вы писали:

C>Не могу зарегистрировать ATL COM objects / DLL непосредственно из Visual Studio. С regsvr32 работает. Visual Studio запускал с 'elevated privilege', для linker указал 'per user registration'.

C>Среда – Windows 7, Visual Studio 2008.

Как-то не очень понятно.
то есть, 'per user registration' для того и были придуман, чтобы НЕ запускать Visual Studio с 'elevated privilege'
В смысле, это бессмысленно (с)
Re[2]: Не могу зарегистрировать ATL COM objects из Visual St
От: chygyrynsky Германия  
Дата: 26.03.10 20:09
Оценка:
Спасибо за быстрый ответ.

И мне абсолютно не понятно, почему не работает.
In non-administrator mode c per user registration регистрация должна быть перенаправлена в HKCU вместо HKCR.
А если запустить VS с правами администратора, проблем вообще не должно быть.
Re[2]: Не могу зарегистрировать ATL COM objects из Visual St
От: chygyrynsky Германия  
Дата: 26.03.10 20:28
Оценка:
Вот что стоит в файле проекта:
<Tool
Name="VCLinkerTool"
RegisterOutput="true"
PerUserRedirection="true"
...

А вот что говорит VS:
Ausgabe wird registriert (Umleitung pro Benutzer)...
Project : error PRJ0050: Fehler beim Registrieren der Ausgabe. Versuchen Sie, die Umleitung pro Benutzer zu aktivieren, oder registrieren Sie die Komponente an einer Eingabeaufforderung mit erweiterten Berechtigungen.

'Umleitung pro Benutzer' и есть 'Per-user Redirection' по-немецки (у меня немецкая версия).
Re[3]: Не могу зарегистрировать ATL COM objects из Visual St
От: bnk СССР http://unmanagedvisio.com/
Дата: 27.03.10 05:01
Оценка:
Здравствуйте, chygyrynsky, Вы писали:

C>Спасибо за быстрый ответ.


C>И мне абсолютно не понятно, почему не работает.

C>In non-administrator mode c per user registration регистрация должна быть перенаправлена в HKCU вместо HKCR.
C>А если запустить VS с правами администратора, проблем вообще не должно быть.

Попробуй убрать "per-user registration", возможно твой проект ее тупо не поддерживает.
Чтобы работала "per-user registration", кроме DllRegisterServer, должна быть реализована еще и функция DllInstall.
У тебя она точно есть? В смысле, она начала добавляться мастером не так давно, и если проект у тебя старый, то ее надо добавить руками.

Или, альтернативно, НЕ использовать Per-user-registration. То есть, убрать флажок "PerUserRegistration",
и студию запускать под администратором.

Кстати, как ты регистрируешь через regsvr32? В смысле, если ты регистрируешь так:

regsvr32 your.dll

То в этом случае regsvr32 вызывает DllRegisterServer.

Для того, чтобы зарегистрировать под юзером через regsvr32 (т.е. чеерз DllInstall, а не через DllRegisterServer, т.е. запустить регистрацию под отладчиком), надо делать:

regsvr32 /u /n -i your.dll

Студия, когда per-user-registration выключена, действует по первому варианту, а когда включена — по второму.
Для того, чтобы добавить DllInstall (если нету) можешь создать пустой ATL проект, и скопировать его в свой оттуда.
Re[4]: Не могу зарегистрировать ATL COM objects из Visual St
От: bnk СССР http://unmanagedvisio.com/
Дата: 27.03.10 05:12
Оценка:
Здравствуйте, bnk, Вы писали:

bnk> regsvr32 /u /n -i your.dll


Упс, наврал. Правильная строчка:

regsvr32 /i:user /n your.dll
Re[5]: Не могу зарегистрировать ATL COM objects из Visual St
От: chygyrynsky Германия  
Дата: 29.03.10 16:12
Оценка:
Большое спасибо. Я подумаю, как быть дальше. Может быть реализую через registration-free COM. Как Ты думаешь?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.