-1

HKEY_LOCAL_MACHINE レジストリにデータを保存する必要がある Excel のアドインがあります。Windows Vista 以前のバージョンの UAC コントロールのため、マニフェスト ファイルを追加しました。しかし、それは機能していません。ソリューションの各プロジェクトにマニフェストを追加しました。私のソリューションには 5 つのプロジェクトがあります (3 つの VB プロジェクト、1 つの C++ および 1 つの展開)。

私はVS2005を使用しています。マニフェスト ファイルをプロジェクトに追加しました (requestedExecutionLevel を "requireAdministrator" に設定し、ビルド後のコマンドで mt.exe を使用してマニフェストを埋め込みました。それでも、HKEY_LOCAL_MACHINE へのアクセスが拒否されます。唯一のことそれは、「管理者として実行」としてExcelを起動したときです。

何が問題なのか手がかりはありますか? ありがとう。

4

1 に答える 1

1

DLL のマニフェストは、アプリケーションの実行レベルには影響しません。この場合はexcel.exe.

選択肢は次のとおりです。

  • Excel を管理者として実行する。
  • HKLM ではなく HKCU に書き込むようにアドオンを変更します。

他のユーザーが使用できるデータを保存する必要がある場合は、ProgramDataフォルダー (CSIDL_COMMON_APPDATAまたはFOLDERID_ProgramData) の使用を検討してください。次に、アドオンは内部にサブディレクトリを作成し、ProgramDataその権限を変更して、この新しいディレクトリが誰でも書き込み可能になるようにします (デフォルトでは、フォルダーを作成したユーザー アカウントのみが書き込み権限を持ち、他のユーザーは読み取りのみ可能です)。


他にもいくつかのオプションがあります:

  • アドオンがデータを HKLM に書き込むために通信するサービスを作成できますが、そうではありません。
  • HKLM にデータを書き込む昇格された COM オブジェクトを作成できます。

ユーザーは Excel の実行時に昇格が必要になるとは考えていませんが、アドオンが昇格をまったく必要としないようにロジックを変更することを検討してください。

于 2013-02-03T16:59:56.490 に答える