欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# 以管理员权限删除文件

程序员文章站 2022-07-17 08:46:51
当我们的系统时间不正常,比如设置一个日期-1999年9月9日,会引发证书问题。 系统时间不正常-IE有概率能访问 触发NavigateError事件,异常代码INET_E_INVALID_CERTIFICATE -- 这是一个必要不充分条件,系统时间不正常时IE有相关证书异常,更新时间能解决此类异常 ......

当我们的系统时间不正常,比如设置一个日期-1999年9月9日,会引发证书问题。

系统时间不正常-ie有概率能访问

触发navigateerror事件,异常代码inet_e_invalid_certificate

-- 这是一个必要不充分条件,系统时间不正常时ie有相关证书异常,更新时间能解决此类异常

系统时间不正常-cef完全无法访问

1.使用cef-demo,异常显示如下:

C# 以管理员权限删除文件

2.chromiumwebbrowser控件,此类异常也会触发loaderror事件

C# 以管理员权限删除文件

异常code是ceferrorcode.aborted,文件下载取消等异常信息也是aborted类型,所以无法判断当前异常是否证书相关异常。

那么有没有cef浏览器有没有其它相关异常事件,可以准确获知相关证书异常呢?

cef系统时间不正常的修复方案

cef有请求委托requesthandler对象,可以在本地定制相关实现

_cefbrowser.requesthandler = new chromebrowserrequesthandler();

新建chromebrowserrequesthandler,继承默认requesthandler,把相关事件暴露给外界调用

 1     public class chromebrowserrequesthandler : defaultrequesthandler
 2     {
 3         /// <summary>
 4         /// 证书异常
 5         /// 有很多种,比如系统时间不正确引发证书异常 certdateinvalid
 6         /// </summary>
 7         public event eventhandler<(string url, ceferrorcode errorcode)> certificateerror;
 8         public override bool oncertificateerror(
 9           iwebbrowser browsercontrol,
10           cefsharp.ibrowser browser,
11           ceferrorcode errorcode,
12           string requesturl,
13           isslinfo sslinfo,
14           irequestcallback callback)
15         {
16             callback.dispose();
17             //证书异常
18             certificateerror?.invoke(this,(requesturl,errorcode));
19             return false;
20         }
21     }

获取到证书异常的触发时机,如何解决系统时间不正常?

详见我的博客:c# 同步更新系统时间

注:更新系统时间,需要管理员权限。相关app.manifest添加设置 ,见: