我有一個註冊的ActiveX組件,我在C#項目中引用它。但是,我想知道正在運行的實際組件的原始路徑。這不是執行路徑本身。有沒有比手工搜索註冊表更安全的東西?如何獲取ActiveX組件的註冊路徑
該組件使用簡單/ regserver命令進行註冊(如果相關)。
我有一個註冊的ActiveX組件,我在C#項目中引用它。但是,我想知道正在運行的實際組件的原始路徑。這不是執行路徑本身。有沒有比手工搜索註冊表更安全的東西?如何獲取ActiveX組件的註冊路徑
該組件使用簡單/ regserver命令進行註冊(如果相關)。
使用您的EXE文件的名稱在HKEY_CLASSES_ROOT\CLSID
下進行搜索。它應該用作「LocalServer32」的值。
謝謝。我通過在註冊表中篩選發現了這一點。但我的目標是避免這樣做:P – MPelletier 2010-11-02 01:59:57
有許多方法可以通過使用流行的編程語言來閱讀'HKCR \ CLSID \
這是一個從註冊表中獲取值的函數。需要額外的驗證。
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)給一個類嗎? – wqw 2010-11-01 20:07:35
是的,進程外。但是,我無法編輯服務器本身,它已編譯且無源代碼。 – MPelletier 2010-11-01 20:45:13