私が理解している壁に当たっています。インスタンス化したい単純なCOMサーバーがあります。私は(します。cscript myVBS)PSの実行空間/パイプラインと最後にProcess.Start、遅延バインディング、事前バインディングしようとした私のC#コードで.NETプロセスがActiveXオブジェクトを作成できません
$sms_client = New-Object -COM 'CPApplet.CPAppletMgr'
Set controlPanelAppletManager = CreateObject("CPApplet.CPAppletMgr")
:私は、単純なVBSまたはPSは、外部の私のEXEのコマンドで行うことができます。これらのシナリオでは、登録されていないクラスが戻ってきて失敗します。
//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ののプラットフォームを設定するには、
エラーが離れて行かせました。 AnyCPUとx86は失敗します。つまり、32ビットと64ビットのワークステーション用に2つのバージョンのEXEを作成する必要がありますか?
この資料は役立ちます:[32ビットまたは64ビットActiveXコンポーネントをx64 Windowsで使用する](http://cknotes.com/using-32-bit-or-64-bit-activex-components-on- x64-windows /) – TnTinMn