我们在 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/