COM相互運用機能オブジェクトをインスタンス化する場合:
var comObj = new ComComponentClass();
私は:を取得しCOMException
ます
Retrieving the COM class factory for component with CLSID
{C343ED84-A129-11D3-B799-0060B0F159EF} failed due to the following error:
80040154 Class not registered
(Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
このエラーが発生するのは、[管理者として実行]を使用してアプリケーションを起動した場合のみです。正常に動作している場合、エラーは発生しません。
ノート:
- アプリケーションは64ビットアプリケーションです。
- COMコンポーネントは、64ビットdllのinprocサーバーです。
この違いが発生する理由をどこから調査し始めるべきかについてのアイデアはありますか?
私が試したこと:
Procmonを使用して、Procmonが検査するレジストリキーを監視しました。
- どちらの場合も、キーを検査することで適切なdllが見つかります
HKCU\Software\Classes\CLSID\{C343ED84-A129-11d3-B799-0060B0F159EF}\InprocServer32
- どちらの場合も、キー
HKCR\CLSID\{C343ED84-A129-11D3-B799-0060B0F159EF}
を照会して戻りNAME NOT FOUND
ます。これは奇妙だと思います(使用してそのキーを見つけることができるためですregedit.exe
。しかし、これは2つのシナリオ間で違いがないため、重要ではないようです。