在Win7中使用没有registry的COM Exe服务器

在Win7中使用没有registry的COM Exe服务器,第1张

概述在Win7中使用没有registry的COM Exe服务器

我有一个现有的COM Exe服务器,并调用它的VBA或.NET代码。 我们希望在不需要安装或修改registry的情况下使其工作,以便其他不在其计算机上的pipe理员的用户可以使用它。

假设更改/修改COM Exe服务器是不可能的(昂贵的)。

问题1:从注册正在运行的EXE服务器开始 ,EXE服务器可以调用CoRegisterClassObject来在类表中注册CLSID。 这是否意味着客户应该能够从那里CoGetClassObject? (甚至没有该types/类的registry项?)

问题2:如果以上是正确的,我的EXE服务器使用CComModule(不build议使用,是的),我可以看到确实调用了CoRegisterClassObject。 有没有办法来valIDation类表,所以看到这是正确的?

如何在C#中指定非精确path

自动打开谷歌浏览器,单击button,并closures铬C#WinForms

在.NET中模仿windows的“运行”窗口

windows – 无线控制台输出可能导致系统嘟嘟声?

C#应用程序没有正确closures(表单closures后仍然在内存中运行)

问题3:


这是我正在使用的片段。 clsID和iID是指相应的clsID和iID指令。 它在调用CreateInstance时没有注册接口(从HRESulTexception:0x80040155)失败。 这让我感到难过,有什么想法可能是错的?

var factory = UnsafeNativeMethods.CoGetClassObject( clsID,RegistrationClassContext.LocalServer,IntPtr.Zero,typeof(UnsafeNativeMethods.IClassFactory).GUID) as UnsafeNativeMethods.IClassFactory; factory.CreateInstance(null,ref iID,out obj);

创build窗口句柄时出错

错误1053:服务没有及时响应启动或控制请求?

如何在订阅DWM组合/ Aero Glass禁用时引发的 *** 作系统级事件?

.NET(C#):当你只有一个进程句柄或PID时获取子窗口?

C# – 如何使用TaskSchedular类列出特定用户的计划任务

问题1:从注册正在运行的EXE服务器开始,EXE服务器可以调用CoRegisterClassObject来在类表中注册CLSID。 这是否意味着客户应该能够从那里CoGetClassObject? (甚至没有该类型/类的注册表项?)

是。 CoRegisterClassObject就足够了(不需要注册表)就可以让任何使用CLSCTX_LOCAL_SERVER调用CoCreateInstance客户端都可以使用你的CLSCTX_LOCAL_SERVER 。 但是,您可能有编组调用的问题,因为COM代理/存根DLL和/或类型库未注册。 所以,像Idispatch , IoleCommandTarget等众所周知的接口将被整理,没有任何问题,但任何自定义接口将失败。

不过,还有其他的方法可以让你的EXE服务器可用于客户端。 仅举几例: RegisteractiveObject , IRunningObjecttable 。

问题2:如果以上是正确的,我的EXE服务器使用CCommodulee(不建议使用,是的),我可以看到确实调用了CoRegisterClassObject。 有没有办法来验证类表,所以看到这是正确的?

我只能想到调用CoGetClassObject或CoCreateInstance (或者需要CLSCTX_LOCAL_SERVER标志)来验证。

问题3:这是我正在使用的片段。 clsID和iID是指相应的clsID和iID指令。 它在调用CreateInstance时没有注册接口(从HRESulT异常:0x80040155)失败。 这让我感到难过,有什么想法可能是错的?

这很奇怪。 如果COM标准封送拆收器无法找到接口的代理/存根工厂,则返回0x80040155(REGDB_E_IIDNOTREG),但IClassFactory不需要自定义代理。 你确定你在IClassFactory C#定义中有一个正确的GUID吗? 这应该是GuID("00000001-0000-0000-C000-000000000046") 。

总结

以上是内存溢出为你收集整理的在Win7中使用没有registry的COM Exe服务器全部内容,希望文章能够帮你解决在Win7中使用没有registry的COM Exe服务器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1291502.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存