0

Outlook 2013 のアドインを作成しました。

他のアドインをオン/オフしたかった。そのため、以下のコードを使用してそれを行いました。

Outlook.Application OutLook = new Outlook.Application();

if (OutLook.Application.COMAddIns.Item("OutlookAddIn").Connect)
{
 OutLook.Application.COMAddIns.Item("OutlookAddIn").Connect = false;
}
else
{
OutLook.Application.COMAddIns.Item("OutlookAddIn").Connect = true;
}

しかし、管理者として Outlook を開いた場合にのみ、正常に動作しています。通常のユーザーの場合、正常に動作していません。

これを達成できる他の方法はありますか?または、このコードのみを管理者として実行できますか?

4

1 に答える 1

1

HKLM を変更するには、ローカル管理者またはパワー ユーザーである必要があります。通常のユーザーには、アドインのWindows レジストリ キーを変更するための十分な権限がありません。ほとんどの場合、アドインは HKLM ハイブに登録されています。

もちろん、マシンごとのアドインの場合、アプリケーションが管理者権限で実行されている場合は、Connect プロパティを設定できます。ただし、UAC が有効になっているシステムでは、管理者権限に加えて、アプリケーション プロセスを昇格する必要があります。

マシンごとのアドインであっても、Outlook でアドインを手動で無効にすることができます。これは、HKCU エントリを追加して実行できることを意味します。レジストリを見ると、HKEY_CURRENT_USER配下のアドインの「LoadBehavior」の値が変わっています。ただし、HKEY_LOCAL_MACHINE の下の「LoadBehavior」の値は変更されていません。これは予想される動作です。通常のユーザーは、すべてのユーザーに対してアドインを無効にすることはできません。

その場合、アドインは現在のユーザーに対してのみ無効になることに注意してください。

そのため、アドインを無効にするのではなく、実行時にアドインのすべての機能を無効にすることをお勧めします。実行時に、ユーザーがアドインの読み込みを承認されているかどうかを確認できます。認証結果に基づいて、アドインの UI やその他のビジネス ロジック (Outlook イベントなどを購読する) を読み込むかどうかを決定できます。 . つまり、アドインは有効になりますが、エンド ユーザーはそれを認識しません。

LoadBehavior キーを対応する HKCU ハイブに追加しても、次に Outlook を起動したときにアドインが読み込まれます。

于 2015-01-08T12:09:16.203 に答える