我正在點擊我理解的牆。我有一個簡單的COM服務器,我想實例化。我可以簡單的VBS這樣做或PS命令我EXE外:.NET進程無法創建ActiveX對象
$sms_client = New-Object -COM 'CPApplet.CPAppletMgr'
Set controlPanelAppletManager = CreateObject("CPApplet.CPAppletMgr")
在我的C#代碼我試過早期綁定,後期綁定,一個PS運行空間/管道,最後的Process.Start(CSCRIPT myVBS)。在所有這些情況下,它都會返回,並且類未註冊並失敗。
//throws exception
CPAPPLETLib.CPAppletMgr cpAppletMgr= new CPAPPLETLib.CPAppletMgr();
// myType does not come back null
Type myType = Type.GetTypeFromProgID("CPApplet.CPAppletMgr");
// throws exception
object myObject = Activator.CreateInstance(myType);
更新:我可以創建Scripting.FileSystemObject沒有問題。我不需要那個......這只是一個測試。
我試過編譯32位,64位。以標準用戶身份運行並提升。我試過再次註冊這個DLL,但是關於我的C#.NET EXE的一些事情正在做一些它只是看不到COM的東西。我甚至嘗試創建一個全新的控制檯應用程序項目,它也在那裏。
我是否錯過了.NET 101 COM-Interop的基礎知識?
Retrieving the COM class factory for component with CLSID {096C5BA8-044B-4BAC-9914-144723BA4F2A} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
更新:
設置平臺到x64作出錯誤消失。任何CPU和x86都會失敗。這是否意味着我必須爲我的32位和64位工作站創建2個EXE版本?
本文可能有所幫助:[在x64 Windows上使用32位或64位ActiveX組件](http://cknotes.com/using-32-bit-or-64-bit-activex-components-on- x64-windows /) – TnTinMn