Форум: "Corba";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Внизcom без регистрации в реестре Найти похожие ветки
← →
Oleg_ (2005-07-25 17:27) [0]Подскажите, реально ли задействовать com без реесстра. У меня есть dll и clsid. А вот доступа к соответствующим ветвям реестра нет.
Спасибо
← →
just_me (2005-07-25 19:06) [1]"без реесстра" не реально, исполняющей среде СОМ нужно из него извлечь необходимые для загрузки СОМ-сервера данные.
Что же касается "доступа к соответствующим ветвям реестра", то они нужны не вам, среде СОМ
← →
Opuhshii (2005-08-12 00:47) [2]ещё как можно!
реестр нужен для того чтоб определить местонахождение сервера,
а зная его нахождение можно руками его загрузить, получить нужную фабрику и наплодить объектов.
типа так,..
procedure TForm1.Button1Click(Sender: TObject);
var
ClassFactory:IClassFactory2;
DllHandle:THandle;
ADllGetClassObject:TDllGetClassObject;
AObject:INoRegister;
begin
DllHandle:=LoadLibrary("C:\Program Files\Borland\Delphi6\Projects\DelphiMaster\ComHelo2\noregister.dll");
ADllGetClassObject:=GetProcAddress(DllHandle,"DllGetClassObject");
OleCheck(ADllGetClassObject(CLASS_NoRegister_,IClassFactory2,ClassFactory));
ClassFactory.CreateInstance(nil,INoRegister,AObject);
OleCheck(AObject.Method1);
end;
+ нужно добавить выгрузку DllHandle в нужный момент,..
DllCanUnloadNow
сервер создавался Internal т.е. без регистрации в реестре.
initialization
TTypedComObjectFactory.Create(ComServer, TNoRegister, Class_NoRegister,
ciInternal, tmApartment);
итог:доступ к соответствующим ветвям реестра ваще нафиг никому на локальной машине не нужен 8)
← →
isasa © (2005-08-12 11:31) [3]зачем так извращаться. Или COM, или обычные библиотеки.
А если вызвать
ADllGetClassObject:=GetProcAddress(DllHandle,"DllRegisterServer");
OleCheck(ADllGetClassObject(...));
то получим, те-же яйца, только вид сбоку.
← →
Opuhshii (2005-08-12 11:33) [4]"А вот доступа к соответствующим ветвям реестра нет"
Страницы: 1 вся ветка
Форум: "Corba";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.013 c