Microsoft社製のClickOnceアプリケーションをインストールしようとすると、「このアプリケーションはコンピュータのセキュリティを脅かす可能性があるため、管理者によってブロックされています」「セキュリティ設定により、このアプリケーションをコンピュータにインストールできません」というエラーが表示されます。
このポリシーを設定したはずの管理者としては、なぜ、同じイメージのPCを持つ他のユーザーではなく、たった一人のユーザーに対してブロックされているのか、また、次のメッセージを受け取ったユーザーと同じ特権を享受できるはずの他のユーザーに対しては有効なのか、どうしても理解することができないのです。なお、エラーが発生しているこのユーザーと、エラーが発生していないユーザーには、まったく同じドメインのグループポリシーが適用されています。
アプリケーションを管理者として実行しても、問題は解決されません。イベントログには何のエラーも表示されず、他に問題を診断するためのログを見つけることができません。
このアプリケーションを許可または拒否するローカルポリシーまたは設定は何でしょうか?
これは、"ClickOnce Trust Prompt Behavior": https://msdn.microsoft.com/en-us/library/ee308453.aspx によって引き起こされます。
これを調整するには、レジストリの値を変更するだけで、アプリケーションをインストールすることができるようになるはずです。
レジストリエディタを使用してClickOnce trust promptを有効にする場合 Open レジストリエディタを起動します。
「スタート」をクリックし、「ファイル名を指定して実行」をクリックします。
開く」ボックスに「regedit32」と入力し、「OK」をクリックします。
以下のレジストリキーを探します。
\HKEY_LOCAL_MACHINE ↪SOFTWARE↩MICROSOFT ╱.NETFramework ╱Security ╱TrustManager╱PromptingLevel
キーが存在しない場合、キーを作成します。
以下のサブキーが存在しない場合は、String Valueとして追加します。 gt;存在し、関連する値は次の表のとおりです。
私のコンピュータでは、値が "Disabled"に設定されており、どのアプリケーションがそうしたのか見当もつきません。私は値をデフォルトに変更し、今ではすべてが再びあるべきように動作しています。
または、キー "TrustManager" 自体を削除すれば、すべて同様に機能します。
以下は、値を更新するpowershellスクリプトです。
Set-Itemproperty -path 'HKLM:\SOFTWARE\MICROSOFT\.NETFramework\Security\TrustManager\PromptingLevel' -Name 'Internet' -value 'Enabled'
Set-Itemproperty -path 'HKLM:\SOFTWARE\MICROSOFT\.NETFramework\Security\TrustManager\PromptingLevel' -Name 'LocalIntranet' -value 'Enabled'
Set-Itemproperty -path 'HKLM:\SOFTWARE\MICROSOFT\.NETFramework\Security\TrustManager\PromptingLevel' -Name 'MyComputer' -value 'Enabled'
Set-Itemproperty -path 'HKLM:\SOFTWARE\MICROSOFT\.NETFramework\Security\TrustManager\PromptingLevel' -Name 'TrustedSites' -value 'Enabled'
Set-Itemproperty -path 'HKLM:\SOFTWARE\MICROSOFT\.NETFramework\Security\TrustManager\PromptingLevel' -Name 'UntrustedSites' -value 'Enabled'
上記のコードをpowershellのquot;elevated"(右クリックで管理者として実行)でコピー&ペーストするだけで十分です。
そして、もしエラーが発生した場合は、おそらくパスが存在しないため、次のコマンドを実行してください。
New-Item "HKLM:\SOFTWARE\MICROSOFT\.NETFramework\Security\TrustManager\PromptingLevel" -force | Out-Null
New-ItemProperty -path 'HKLM:\SOFTWARE\MICROSOFT\.NETFramework\Security\TrustManager\PromptingLevel' -Name 'Internet' -value 'Enabled'
New-ItemProperty -path 'HKLM:\SOFTWARE\MICROSOFT\.NETFramework\Security\TrustManager\PromptingLevel' -Name 'LocalIntranet' -value 'Enabled'
New-ItemProperty -path 'HKLM:\SOFTWARE\MICROSOFT\.NETFramework\Security\TrustManager\PromptingLevel' -Name 'MyComputer' -value 'Enabled'
New-ItemProperty -path 'HKLM:\SOFTWARE\MICROSOFT\.NETFramework\Security\TrustManager\PromptingLevel' -Name 'TrustedSites' -value 'Enabled'
New-ItemProperty -path 'HKLM:\SOFTWARE\MICROSOFT\.NETFramework\Security\TrustManager\PromptingLevel' -Name 'UntrustedSites' -value 'Enabled'