標準の VSTO アドイン (Word 2010 および Word 2013、x86 のみ) である製品を開発しました。デフォルトでは、インストール時にすべてのユーザーにインストールされます (つまり、アドインのレジストリ エントリが HKLM - に挿入されますHKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node]\Microsoft\Office\Word\Addins
)。
LoadBehavior
reg キーの値が に設定されている場合0x3
(つまり、"Load at Startup")、アドインは問題なく動作しますが、値をLoadBehavior
toに設定している場合0x10
(つまり、"Load on demand")、アドインは正常に機能しません。予想:
UAC (および Word が管理者特権で実行されない) によりLoadBehavior
、HKLM の の値は から に変更され0x10
ず0x9
、代わりに HKCU ハイブにLoadBehavior
( value を使用して) キーを作成することによってオーバーライドされます。0x9
残念ながら、マニフェスト キーが)と共に HKCU ハイブに存在しない限り、LoadBehavior
この HKCU オーバーライドされた値は考慮されないことがわかりました。この関連スレッドの詳細: https://social.msdn.microsoft.com/Forums/vstudio/en-US/3776734b-333e-423b-9c08-7c7a441c3e94/load-behavior-and-word-addin?forum=vsto
この問題の「明白な」解決策はManifest
、インストール時または各ユーザーが初めてアドインを実行するときに、各ユーザーの HKCU (および HKLM) に を書き込むことです。ただし、このアプローチにはいくつかの重大な欠点があります。
- アドインをアンインストールするには、すべてのユーザーの HKCU 値を削除して、ユーザーが読み込みの問題を経験するのを防ぐ必要があります (これは推奨されません。また、Active Setup を使用する必要があるなど、他の問題や合併症を引き起こす可能性があります)。
- (ローミング) HKCU ハイブにこれらの値を持つユーザーは、アドインがインストールされていない同じドメイン内のマシンにログインすると問題が発生します。
LoadBehavior
HKCUで適切に設定されているHKLMからマニフェストが取得されないのはバグでしょうか?LoadBehavior
値をオーバーライドする必要なく、HKCU で HKLM をオーバーライドできれば、この問題は解決されると思いますManifest
。
この問題を克服する方法を知っている人はいますか?