c# - Clickonce 完全信任应用程序更新因 Windows 8 上的 TrustNotGrantedException 而失败

标签 c# .net winforms visual-studio clickonce

我们在 C# 中有一个 winforms clickonce 应用程序,它被授予完全信任并使用有效证书签名。

该应用程序在 Windows XP、Windows 7 上运行良好并正确更新。但是,在 Windows 8 计算机上,它只是无法更新。该应用程序虽然运行正常。但是,升级到更高版本的第一个更新请求失败并显示:System.Deployment.Application.TrustNotGrantedException

调用 ApplicationDeployment::CheckForDetailedUpdate() 失败后代码失败。想知道为什么会发生这种情况,因为完全相同的代码在所有以前版本的 Windows 上运行良好。任何帮助将不胜感激。下面是相关的堆栈跟踪:

System.Deployment.Application.TrustNotGrantedException: User has refused to grant required permissions to the application.
   at System.Deployment.Application.ApplicationTrust.RequestTrust(SubscriptionState subState, Boolean isShellVisible, Boolean isUpdate, ActivationContext actCtx, TrustManagerContext tmc)
   at System.Deployment.Application.DeploymentManager.DetermineTrustCore(Boolean blocking, TrustParams tp)
   at System.Deployment.Application.DeploymentManager.DetermineTrust(TrustParams trustParams)
   at System.Deployment.Application.ApplicationDeployment.CheckForDetailedUpdate(Boolean persistUpdateCheckResult)
   at System.Deployment.Application.ApplicationDeployment.CheckForDetailedUpdate()

最佳答案

我唯一一次看到此堆栈跟踪是在我尝试调用 CheckForDetailedUpdate() 时,而没有事先设置显式信任。添加以下代码后,更新检查有效。

// Setup the trust level
var deployment = ApplicationDeployment.CurrentDeployment;
var appId = new ApplicationIdentity(deployment.UpdatedApplicationFullName);
var unrestrictedPerms = new PermissionSet(PermissionState.Unrestricted);
var appTrust = new ApplicationTrust(appId) {
    DefaultGrantSet = new PolicyStatement(unrestrictedPerms),
    IsApplicationTrustedToRun = true,
    Persist = true
};
ApplicationSecurityManager.UserApplicationTrusts.Add(appTrust);

// Check for update
var info = deployment.CheckForDetailedUpdate();

关于c# - Clickonce 完全信任应用程序更新因 Windows 8 上的 TrustNotGrantedException 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14688282/

相关文章:

c# - DataReader 已经打开

c# - (NetNative)NetworkInterface.GetNetworkInterfaces() 中的 NotImplementedException Win IoT Core 14393

c# - C#Winforms动态创建的文本框的错误处理

c# - 模仿 Windows 默认文件重命名行为的 .Net 方法

.net - 尝试在 Linux 上将 Mpir.NET 与 F# 一起使用

wpf - 在 winform 或 wpf 中拖放

c# - 在 Azure 云服务上运行 Selenium Chrome WebDriver?

c# - 我怎样才能得到CPU温度?

c# - 单窗口窗体中的从右到左文本

c# - 使用存储在数据库中的图像路径检索图像并显示在图片框中 C#