Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.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

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)