Quando si tenta di installare un'applicazione ClickOnce firmata da Microsoft, appare un errore che indica "L'amministratore ha bloccato questa applicazione perché potenzialmente rappresenta un rischio per la sicurezza del computer" e "Le impostazioni di sicurezza non consentono l'installazione di questa applicazione sul computer".
Come amministratore che avrebbe impostato tali politiche, non riesco a capire perché questo viene bloccato solo per un utente e non per altri utenti i cui PC sono basati sulla stessa immagine e perché funziona per altri utenti che dovrebbero godere degli stessi privilegi dell'utente che sta ricevendo il seguente messaggio. Notate che le stesse identiche politiche di gruppo del dominio sono applicate a questo utente che sta sperimentando l'errore e agli utenti che non stanno ricevendo l'errore.
Anche tentare di eseguire l'applicazione "come amministratore" non risolve il problema. I registri degli eventi non mostrano errori, e non riesco a trovare nessun altro registro per aiutare a diagnosticare il problema.
Quali politiche o impostazioni locali permetterebbero o negherebbero questa applicazione?
Questo è causato dal "ClickOnce Trust Prompt Behavior": https://msdn.microsoft.com/en-us/library/ee308453.aspx
Per regolare questo, basta cambiare i valori nel Registro di sistema e si dovrebbe essere in grado di installare l'applicazione.
Per abilitare il prompt di fiducia di ClickOnce utilizzando l'editor di registro Apri l'editor di registro:
Clicca su Start, e poi clicca su Esegui.
Nella casella Apri, digita regedit32, e poi clicca OK.
Trova la seguente chiave di registro:
\HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT.NETFramework\Security\TrustManager\PromptingLevel
Se la chiave non esiste, creala.
Aggiungi le seguenti sottochiavi come String Value, se non esistono già esistono, con i valori associati mostrati nella seguente tabella.
Sul mio computer, i valori erano impostati su "Disabled" e non ho idea di quale applicazione lo abbia fatto. Ho cambiato i valori con quelli di default e ora tutto funziona di nuovo come dovrebbe.
Oppure puoi semplicemente cancellare la chiave "TrustManager" stessa e tutto funziona come dovrebbe.
Ecco uno script powershell che aggiornerà i valori:
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'
E' sufficiente copiare/incollare il codice di cui sopra, in powershell, (tasto destro del mouse esegui come amministratore).
E se ottieni degli errori, probabilmente perché il percorso non esiste, allora esegui questi comandi
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'