由于安全设置而无法安装ClickOnce应用程序(Windows 10)


70

尝试安装Microsoft签名的ClickOnce应用程序时,出现错误,指出“您的管理员已阻止此应用程序,因为它可能对您的计算机造成安全风险”,并且“您的安全设置不允许在您的计算机上安装此应用程序” 。

正如将要制定上述策略的管理员一样,我无法一生都知道为什么仅针对一个用户而不是针对其他PC基于同一映像的其他用户阻止此策略,以及为什么该策略适用于应该使用其他策略的其他用户享有与接收以下消息的用户相同的特权。请注意,将完全相同的域组策略应用于遇到此错误的此用户和未收到该错误的用户。

伊姆古尔

即使尝试以“管理员身份”运行应用程序也无法解决问题。事件日志未显示任何错误,并且我无法找到任何日志来帮助诊断问题。

哪些本地策略或设置将允许或拒绝此应用程序?


根据msdn.microsoft.com/en-us/library/142dbbz4(v=vs.90).aspx,它需要Internet或Intranet区域(用于CD-ROM安装的完全信任)

此警告发生在单个用户的计算机上还是多用户在多台计算机上出现此问题?
Ramhound

我注意到,尽管可能不是很清楚,但在最初的问题中,它被阻止为“仅一个用户”。
Beems

这似乎是一个大问题(34,438次观看)。如果我是开发人员,如何防止这种情况在他人的计算机上发生?此问题源于在Visual Studio中制作程序并尝试为我的程序运行Setup.exe。
丹尼尔(Daniel)

@Daniel如果您的应用程序不需要升级,则可以尝试将注册表值设置为HKCU下的:HKCU\SOFTWARE\MICROSOFT\.NETFramework\Security\TrustManager\PromptingLevel\InternetEnabled(完整披露:我尚未对此进行测试)。否则,如果那行不通,您可以尝试包括将其设置为HKLM的可升级流程
-Beems

Answers:


94

这是由“ ClickOnce信任提示行为”引起的:https : //msdn.microsoft.com/en-us/library/ee308453.aspx

要对此进行调整,只需更改注册表中的值,您就应该能够安装该应用程序。

使用注册表编辑器启用ClickOnce信任提示的步骤打开注册表编辑器:

单击开始,然后单击运行。

在“打开”框中,键入regedit32,然后单击“确定”。

查找以下注册表项:

\ HKEY_LOCAL_MACHINE \ SOFTWARE \ MICROSOFT \ .NETFramework \ Security \ TrustManager \ PromptingLevel

如果密钥不存在,请创建它。

如果以下子项尚不存在,则将其添加为字符串值,并在下表中显示相关的值。

表格图片

在我的计算机上,值设置为“已禁用”,我不知道哪个应用程序执行了该操作。我将值更改为默认值,现在一切都可以正常工作了。

或者,您可以只删除键“ TrustManager”本身,并且一切正常。



14
谢谢,这确实是问题所在。我改"HKLM\SOFTWARE\MICROSOFT\.NETFramework\Security\TrustManager\PromptingLevel\Internet"Enabled和现在的工作作为-预期。
Beems

1
我要提到的是,除不受信任的站点外,所有站点的默认选项均为“启用”。
Hooch

3
就我而言,我需要更改\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\TrustManager\PromptingLevelEnabled
MaciejLisCK,

2
不同区域有不同的条目,例如Internet,LocalIntranet,MyComputer,TrustedSites,UntrustedSites。选择一个适合您的方案,并将其值更改为Enabled
smwikipedia

4
普通用户应该怎么做呢?好的,我的意思是,如果某人不笨,他们可以在Google上搜索并找到答案,然后做..但是您知道我的意思,这是什么痛苦。如果Windows不是提高生产力的最佳操作系统,我不会忍受这种废话(以及自动更新的强制重启)
Mikey

2

这是一个将更新值的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中复制/粘贴以上代码即可(以管理员身份右键单击运行)。

如果您遇到一些错误,可能是因为路径不存在,请运行以下命令

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'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.