Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取ActiveX组件';s注册路径_C#_Com_Activex_Regsvr32 - Fatal编程技术网

C# 如何获取ActiveX组件';s注册路径

C# 如何获取ActiveX组件';s注册路径,c#,com,activex,regsvr32,C#,Com,Activex,Regsvr32,我有一个注册的ActiveX组件,我正在一个C#项目中引用它。但是,我想知道实际运行组件的原始路径。这不是执行路径本身。有什么比手工搜索注册表更明智的吗 如果相关,则使用简单的/regserver命令注册组件。在HKEY\U CLASSES\U ROOT\CLSID下搜索EXE文件名。它应该用作“LocalServer32”的值。这里有一个从注册表中提取值的函数。需要额外的验证 using Microsoft.Win32; //... static string GetCOMPath(stri

我有一个注册的ActiveX组件,我正在一个C#项目中引用它。但是,我想知道实际运行组件的原始路径。这不是执行路径本身。有什么比手工搜索注册表更明智的吗


如果相关,则使用简单的/regserver命令注册组件。

HKEY\U CLASSES\U ROOT\CLSID
下搜索EXE文件名。它应该用作“LocalServer32”的值。这里有一个从注册表中提取值的函数。需要额外的验证

using Microsoft.Win32;

//...
static string GetCOMPath(string comName)
{
    RegistryKey comKey = Registry.ClassesRoot.OpenSubKey(comName + "\\CLSID");
    string clsid = (string)comKey.GetValue("");
    comKey = Registry.ClassesRoot.OpenSubKey("CLSID\\" + clsid + "\\LocalServer32");
    return (string)comKey.GetValue("");
}

然而,我想知道这是不是已经包装在某个丢失的C#库中了…

所以这是一个进程外服务器?是否可以将属性(ProcessID)添加到类中?是的,进程外。但是,我无法编辑服务器本身,它已编译且无源代码。谢谢。我是在登记处筛选出来的。不过,我的目标是避免这样做:p使用流行编程语言阅读
HKCR\CLSID\\LocalServer32
的方法有很多,imho不需要独立的工具。非程序员可以使用
reg查询