转载链接:https://technet.microsoft.com/zh-cn/magazine/ee308453
可以配置 ClickOnce 信任提示以控制是否允许最终用户选择安装 ClickOnce 应用程序,如 Windows Forms 应用程序、Windows Presentation Foundation 应用程序、控制台应用程序、WPF 浏览器应用程序和 Office 解决方案。 可以通过在每个最终用户的计算机上设置注册表项来配置信任提示。
下表显示了可应用于五个区域(即 Internet、UntrustedSites、MyComputer、LocalIntranet 和 TrustedSites)中的每个区域的配置选项。
选项
|
注册表设置值
|
说明
|
启用信任提示。
|
Enabled
|
显示 ClickOnce 信任提示以便最终用户能够向 ClickOnce 应用程序授予信任。
|
限制信任提示。
|
AuthenticodeRequired
|
ClickOnce 信任提示仅在已用标识发行者的证书对 ClickOnce 应用程序进行签名的情况下显示。
|
禁用信任提示。
|
禁用
|
对于未用显式信任证书进行签名的任何 ClickOnce 应用程序,不显示 ClickOnce 信任提示。
|
下表显示了每个区域的默认行为。 “应用程序”列指的是 Windows Forms 应用程序、Windows Presentation Foundation 应用程序、WPF 浏览器应用程序和控制台应用程序。
区域
|
应用程序
|
Office 解决方案
|
MyComputer
|
Enabled
|
Enabled
|
LocalIntranet
|
Enabled
|
Enabled
|
TrustedSites
|
Enabled
|
Enabled
|
Internet
|
Enabled
|
AuthenticodeRequired
|
UntrustedSites
|
禁用
|
禁用
|
通过启用、限制或禁用 ClickOnce 信任提示,可以重写这些设置。
启用 ClickOnce 信任提示
如果想要向最终用户呈现选项,使他们可以选择安装和运行来自某个区域的任何 ClickOnce 应用程序,请为该区域启用信任提示。
使用注册表编辑器启用 ClickOnce 信任提示
-
打开注册表编辑器:
-
单击“开始”,然后单击“运行”。
-
在“打开”框中,键入 regedit32,然后单击“确定”。
-
查找以下注册表项:
HKEY_LOCAL_MACHINESOFTWAREMICROSOFT.NETFrameworkSecurityTrustManagerPromptingLevel
如果该项不存在,请创建它。
-
按下表所示,以“字符串值”的形式添加以下子项(如果这些子项尚不存在)及关联的值。
字符串值子项
|
值
|
Internet
|
Enabled
|
UntrustedSites
|
禁用
|
MyComputer
|
Enabled
|
LocalIntranet
|
Enabled
|
TrustedSites
|
Enabled
|
对于 Office 解决方案,Internet 的默认值为 AuthenticodeRequired,而 UntrustedSites 的默认值为 Disabled。 对于所有其他应用程序,Internet 的默认值为Enabled。
以编程方式启用 ClickOnce 信任提示
-
在 Visual Studio 中创建一个 Visual Basic 或 Visual C# 控制台应用程序。
-
打开 Program.vb 或 Program.cs 文件进行编辑,并添加以下代码。
Dim key As Microsoft.Win32.RegistryKey
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWAREMICROSOFT.NETFrameworkSecurityTrustManagerPromptingLevel")
key.SetValue("MyComputer", "Enabled")
key.SetValue("LocalIntranet", "Enabled")
key.SetValue("Internet", "Enabled")
key.SetValue("TrustedSites", "Enabled")
key.SetValue("UntrustedSites", "Disabled")
key.Close()
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE\MICROSOFT\.NETFramework\Security\TrustManager\PromptingLevel");
key.SetValue("MyComputer", "Enabled");
key.SetValue("LocalIntranet", "Enabled");
key.SetValue("Internet", "AuthenticodeRequired");
key.SetValue("TrustedSites", "Enabled");
key.SetValue("UntrustedSites", "Disabled");
key.Close();
-
限制 ClickOnce 信任提示
对信任提示进行限制,这样,在提示用户做出信任决定之前,必须使用具有已知标识的 Authenticode 证书对解决方案进行签名。
使用注册表编辑器限制 ClickOnce 信任提示
-
打开注册表编辑器:
-
单击“开始”,然后单击“运行”。
-
在“打开”框中,键入 regedit,然后单击“确定”。
-
查找以下注册表项:
HKEY_LOCAL_MACHINESOFTWAREMICROSOFT.NETFrameworkSecurityTrustManagerPromptingLevel
如果该项不存在,请创建它。
-
按下表所示,以“字符串值”的形式添加以下子项(如果这些子项尚不存在)及关联的值。
字符串值子项
|
值
|
UntrustedSites
|
禁用
|
Internet
|
AuthenticodeRequired
|
MyComputer
|
AuthenticodeRequired
|
LocalIntranet
|
AuthenticodeRequired
|
TrustedSites
|
AuthenticodeRequired
|
以编程方式限制 ClickOnce 信任提示
-
在 Visual Studio 中创建一个 Visual Basic 或 Visual C# 控制台应用程序。
-
打开 Program.vb 或 Program.cs 文件进行编辑,并添加以下代码。
Dim key As Microsoft.Win32.RegistryKey
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWAREMICROSOFT.NETFrameworkSecurityTrustManagerPromptingLevel")
key.SetValue("MyComputer", "AuthenticodeRequired")
key.SetValue("LocalIntranet", "AuthenticodeRequired")
key.SetValue("Internet", "AuthenticodeRequired")
key.SetValue("TrustedSites", "AuthenticodeRequired")
key.SetValue("UntrustedSites", "Disabled")
key.Close()
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE\MICROSOFT\.NETFramework\Security\TrustManager\PromptingLevel");
key.SetValue("MyComputer", "AuthenticodeRequired");
key.SetValue("LocalIntranet", "AuthenticodeRequired");
key.SetValue("Internet", "AuthenticodeRequired");
key.SetValue("TrustedSites", "AuthenticodeRequired");
key.SetValue("UntrustedSites", "Disabled");
key.Close();
-
禁用 ClickOnce 信任提示
可以禁用信任提示,使最终用户无法选择安装其安全策略已不信任的解决方案。
使用注册表编辑器禁用 ClickOnce 信任提示
-
打开注册表编辑器:
-
单击“开始”,然后单击“运行”。
-
在“打开”框中,键入 regedit,然后单击“确定”。
-
查找以下注册表项:
HKEY_LOCAL_MACHINESOFTWAREMICROSOFT.NETFrameworkSecurityTrustManagerPromptingLevel
如果该项不存在,请创建它。
-
按下表所示,以“字符串值”的形式添加以下子项(如果这些子项尚不存在)及关联的值。
字符串值子项
|
值
|
UntrustedSites
|
禁用
|
Internet
|
禁用
|
MyComputer
|
禁用
|
LocalIntranet
|
禁用
|
TrustedSites
|
禁用
|
以编程方式禁用 ClickOnce 信任提示
-
在 Visual Studio 中创建一个 Visual Basic 或 Visual C# 控制台应用程序。
-
打开 Program.vb 或 Program.cs 文件进行编辑,并添加以下代码。
Dim key As Microsoft.Win32.RegistryKey
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWAREMICROSOFT.NETFrameworkSecurityTrustManagerPromptingLevel")
key.SetValue("MyComputer", "Disabled")
key.SetValue("LocalIntranet", "Disabled")
key.SetValue("Internet", "Disabled")
key.SetValue("TrustedSites", "Disabled")
key.SetValue("UntrustedSites", "Disabled")
key.Close()
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE\MICROSOFT\.NETFramework\Security\TrustManager\PromptingLevel");
key.SetValue("MyComputer", "Disabled");
key.SetValue("LocalIntranet", "Disabled");
key.SetValue("Internet", "Disabled");
key.SetValue("TrustedSites", "Disabled");
key.SetValue("UntrustedSites", "Disabled");
key.Close();
-