如何在 C# 中获取已注册 COM 服务器的路径?
Posted
技术标签:
【中文标题】如何在 C# 中获取已注册 COM 服务器的路径?【英文标题】:How do I get the path of a registered COM server in C#? 【发布时间】:2016-07-22 09:03:53 【问题描述】:有没有一种很好的方法可以在 C# 中以编程方式获取已注册 COM 服务器的路径?
我们有一个在 C# 项目中引用的进程外 COM 服务器(即 exe 文件);但是我们想强制我们从特定位置运行 COM 服务器,所以我们想在启动它之前检查注册的 exe 文件的路径。除了潜入注册表之外,还有什么好方法可以做到这一点?
【问题讨论】:
注册表的使用实际上已经记录在案,例如 LocalServer32 键:msdn.microsoft.com/en-us/library/windows/desktop/ms683844.aspx 不,没有好办法。当服务器本身可以简单地告诉您时,请不要依赖预言机。 【参考方案1】:函数QueryPathOfRegTypeLib 就是这样做的。
但是,我确实注意到了一个奇怪的怪癖:
如果我首先按每个用户从一个路径注册:
c:\Path1\comserver.exe /regserverperuser
然后在系统级别的基础上从另一个路径注册:
c:\Path2\comserver.exe /regserver
那么QueryPathOfRegTypeLib返回的是c:\Path1\comserver.exe,其实是c:\Path2\comserver.exe,是加载类型库时启动的...
【讨论】:
以上是关于如何在 C# 中获取已注册 COM 服务器的路径?的主要内容,如果未能解决你的问题,请参考以下文章
在 c# 中,如何测试/获取/设置可能存在或不存在的注册表项?