マネージド コードではない C++ で登録せずに DLL から COM オブジェクトを使用することは可能ですか?
8717 次
3 に答える
10
はい、他の登録済みオブジェクトに内部的に依存していない場合。
- あなた
LoadLibraryはDLL - あなた
GetProcAddressはそのDllGetClassObject - 関心のあるポインタ
DllGetClassObjectを取得するために呼び出しますIClassFactoryCLSID - あなたは一緒に行って
IClassFactory::CreateInstance、コクラスをインスタンス化するのは良いことです
于 2012-06-18T17:51:54.800 に答える
7
DLL のマニフェスト ファイルを作成し、Registration-Free COMを使用できます。
于 2012-06-18T17:59:53.717 に答える
3
たとえば、COM DLL を登録する必要がありますが、アプリケーションには管理者アクセス権がありません。以下は、HKEY_CURRENT_USER管理者権限を必要としないDLL を登録するための簡単なハックです。
LoadLibraryCOM DLL をロードするために使用します。- を呼び出し
GetGetProcAddressて のアドレスを取得しますDllRegisterServer。 - を呼び出し
RegOverridePredefKeyて一時レジストリをリダイレクトします:HKEY_LOCAL_MACHINEtoHKEY_CURRENT_USERおよびHKEY_CLASSES_ROOTtoHKEY_CURRENT_USER\Software\Classes。 DllRegisterServerステップ 2 で取得したコール。- レジストリのリダイレクトを逆にします。
- いつものように COM サーバーを使用してください。現在は に登録されてい
HKEY_CURRENT_USERます。
于 2015-02-11T06:48:54.097 に答える