配置 ClickOnce 信任提示行为

你可以配置 ClickOnce 信任提示来控制是否为最终用户提供了安装 ClickOnce 应用程序(如 Windows 窗体应用程序、Windows Presentation Foundation 应用程序、控制台应用程序、WPF 浏览器应用程序和 Office 解决方案)的选项。 通过在每个最终用户的计算机上设置注册表项来配置信任提示。

下表显示了可应用于五个区域(Internet、UntrustedSites、MyComputer、LocalIntranet 和 TrustedSites)的每个区域的配置选项。

选项 注册表设置值 描述
启用信任提示。 Enabled 将显示 ClickOnce 信任提示,以便最终用户可以向 ClickOnce 应用程序授予信任。
限制信任提示。 AuthenticodeRequired 仅当 ClickOnce 应用程序使用标识发布者的证书进行签名时,才会显示 ClickOnce 信任提示。 否则,不会安装 ClickOnce 应用程序。
禁用信任提示。 Disabled 未显示 ClickOnce 信任提示。 将仅安装使用显式受信任的证书签名的 ClickOnce 应用程序。

下表显示了每个区域的默认行为。 “应用程序”列是指 Windows 窗体应用程序、Windows Presentation Foundation 应用程序、WPF 浏览器应用程序和控制台应用程序。

区域 应用程序 办公解决方案
MyComputer Enabled Enabled
LocalIntranet Enabled Enabled
TrustedSites Enabled Enabled
Internet Enabled AuthenticodeRequired
UntrustedSites Disabled Disabled

可以通过启用、限制或禁用 ClickOnce 信任提示来替代这些设置。

启用 ClickOnce 信任提示

如果希望最终用户能够看到安装并运行来自该区域的任何 ClickOnce 应用程序的选项,请为区域启用信任提示。

使用注册表编辑器启用 ClickOnce 信任提示

  1. 打开注册表编辑器:

    1. 单击 开始,然后单击 运行

    2. 在“打开”框中键入 regedit,然后单击“确定”

  2. 查找以下注册表项:

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

    如果该键不存在,请创建它。

  3. 如果以下子项已不存在,则将它们添加为“字符串值”,其关联值如下表所示

    字符串值子项 价值
    Internet Enabled
    UntrustedSites Disabled
    MyComputer Enabled
    LocalIntranet Enabled
    TrustedSites Enabled

    对于 Office 解决方案,Internet 具有默认值 AuthenticodeRequiredUntrustedSites 具有值 Disabled。 对于所有其他项,Internet 具有默认值 Enabled

以编程方式启用 ClickOnce 信任提示

  1. 在 Visual Studio 中创建 Visual Basic 或 Visual C# 控制台应用程序。

  2. 打开 Program.vbProgram.cs 文件进行编辑,并添加以下代码。

    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();
    
  3. 生成并运行应用程序。

限制 ClickOnce 信任提示

限制信任提示,以便在提示用户做出信任决策之前,必须使用具有已知标识的 Authenticode 证书对解决方案进行签名。

使用注册表编辑器限制 ClickOnce 信任提示

  1. 打开注册表编辑器:

    1. 单击 开始,然后单击 运行

    2. 在“打开”框中键入 regedit,然后单击“确定”

  2. 查找以下注册表项:

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

    如果该键不存在,请创建它。

  3. 如果以下子项已不存在,则将它们添加为“字符串值”,其关联值如下表所示

    字符串值子项 价值
    UntrustedSites Disabled
    Internet AuthenticodeRequired
    MyComputer AuthenticodeRequired
    LocalIntranet AuthenticodeRequired
    TrustedSites AuthenticodeRequired

以编程方式限制 ClickOnce 信任提示

  1. 在 Visual Studio 中创建 Visual Basic 或 Visual C# 控制台应用程序。

  2. 打开 Program.vbProgram.cs 文件进行编辑,并添加以下代码。

    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();
    
  3. 生成并运行应用程序。

禁用 ClickOnce 信任提示

可以禁用信任提示,这样就不给最终用户提供选项去安装在其安全策略中尚未被信任的解决方案。

使用注册表编辑器禁用 ClickOnce 信任提示

  1. 打开注册表编辑器:

    1. 单击 开始,然后单击 运行

    2. 在“打开”框中键入 regedit,然后单击“确定”

  2. 查找以下注册表项:

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

    如果该键不存在,请创建它。

  3. 如果以下子项已不存在,则将它们添加为“字符串值”,其关联值如下表所示

    字符串值子项 价值
    UntrustedSites Disabled
    Internet Disabled
    MyComputer Disabled
    LocalIntranet Disabled
    TrustedSites Disabled

以编程方式禁用 ClickOnce 信任提示

  1. 在 Visual Studio 中创建 Visual Basic 或 Visual C# 控制台应用程序。

  2. 打开 Program.vbProgram.cs 文件进行编辑,并添加以下代码。

    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();
    
    
  3. 生成并运行应用程序。