Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > C/C++: Системное программирование и WinAPI > register scripts |
Автор: Demo_S 24.05.04, 23:26 |
есть в студии 6 в проекте такой файлик, .rgs, в котором скрипты для регистрации COM - сервера находятся:) и все бы хорошо, только после компилции VC упорно пишет Цитата Registering ActiveX Control... 'regsvr32' is not recognized as an internal or external command, operable program or batch file. что за х? как можно ручками зарегить COM сервер, чтобы у него было тот clsid, который я хочу? я так понимаю, юзая regsvr32, но у нее ж нигде не задашь желаемый clsid |
Автор: grustnoe 25.05.04, 01:41 |
regsvr32.exe - это файлик, который регистрирует dll или ocx делает он это так: запускаешь regsvr32 my.dll, он вызывает из нее функцию DllRegisterServer |
Автор: Demo_S 25.05.04, 07:15 |
Это я понимаю:) но в DllRegisterServer стоит return _Module.RegisterServer(TRUE); и все. а я хочу зарегать под конкретным clsid. я так понял, для этого и используется .rgs файл. но он не отрабатывает, хз почему |
Автор: Gazon 25.05.04, 07:23 |
Немного не понятный вопрос. Сначала ты говоришь, что не хочет регестрироваться COM сервер. Потом ты говоришь, что можно его зарегестрировать, но ты хочешь что-бы там был тот CLSID , который ты хочешь. GUIDGEN.exe генерирует уникальный индентификаторы, а зарегестрировать его можно через файл *.Reg - файле системного реестра. Вот примерно как должно это выглядеть. HKEY_CLASSES_ROOT\Simple.Object\CLSID = {F845EE21-BB3F-11cf-8CDD-444553540000} HKEY_CLASSES_ROOT\CLSID\{F845EE21-BB3F-11cf-8CDD-444553540000} = Simple Object Server HKEY_CLASSES_ROOT\CLSID\{F845EE21-BB3F-11cf-8CDD-444553540000}\LocalServer32 = C:\Program Files\MCDC\Labs\Lab02\SimpleServer\ReleaseSimpleServer.exe Генеришь IID, копируешь в этот файл и запускаешь его. И не забудь в программе тоже поменять CLSID на новые. |
Автор: grustnoe 25.05.04, 09:02 |
вот у меня ATL-ый компонент регистрируется тоже через _Module.RegisterServer(TRUE). А еще в этом файле есть такие строчки: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> CComModule _Module; BEGIN_OBJECT_MAP(ObjectMap) OBJECT_ENTRY(CLSID_CellCounter, CCellCounter) END_OBJECT_MAP() в общем, надеюсь, догадаешься |
Автор: Guest 25.05.04, 12:50 |
Все дело в том, что VC просто не может найти regsv32.exe |
Автор: Demo_S 25.05.04, 15:26 |
Цитата Guest, 25.05.04, 15:50 Все дело в том, что VC просто не может найти regsv32.exe а как ему помочь его найти? |
Автор: UncleBob 25.05.04, 15:34 |
Ну вообще этот файл должен ставиться вместе с виндами. |
Автор: Demo_S 25.05.04, 16:00 |
ну дык из консоли он запускается... а VC его запустить не может. лежит он стандартно c:\windowxp\system32\regscr32.exe |