ActiveX コントロールを作成し、Internet Explorer を使用してクライアント マシンに自動インストールするための .cab ファイルを作成しました。そして、それを無効にすると、すべてが正常に機能します...開発環境用の証明書で.cabファイルに署名しました...この問題を克服する方法は何ですか..ユーザーに無効にするように言いたくありません彼らのUACモジュール...
1 に答える
これは、ATL の既定である HKEY_LOCAL_MACHINE にコントロールを登録しようとしていることが原因である可能性があります。コントロールを変更して HKEY_CURRENT_USER (UAC が有効で昇格していないときにアクセスできるレジストリの唯一の部分) に登録する場合は、問題ありません。
VS2008 と ATL を使用している場合は、次のように呼び出してこれを行うことができます。
AtlSetPerUserRegistration(perUser);
古いバージョンでは、もう少しハックが必要です。以下は、私がメンテナンスを手伝っているクロスブラウザ プラグイン フレームワークである FireBreath の問題を解決するために使用したクラスです。
http://code.google.com/p/firebreath/source/browse/src/ActiveXPlugin/axutil.cpp http://code.google.com/p/firebreath/source/browse/src/ActiveXPlugin/axutil.h
次にFbPerUserRegistration perUser(true);
、DllRegisterServer および DllUnregisterServer エントリポイントに以下を入力するだけです。
代わりに (私は .cab インストールを使用しないので、これを試したことはありません)、.cab インストールを変更してこれを行う方法について説明しているドキュメントが msdn にあり、コントロールの変更は必要ありません:
http://msdn.microsoft.com/en-us/library/dd433049%28VS.85%29.aspx
別の簡単な注意として、Process Monitor を使用して、コントロールを登録するときに使用しているキーを確認できます。フィルターをいじるにはある程度の練習が必要ですが、コツをつかめば悪くはありません。HKCR (HKEY_CLASSES_ROOT) に書き込んでいる場合、デフォルトで HKEY_LOCAL_MACHINE/Software/Classes に配置されます。(管理者権限がないことによる問題を回避するために) したいことは、キーを HKEY_CURRENT_USER/Software/Classes に置くことです。
それが役立つことを願っています