C# 以管理员权限删除文件
程序员文章站
2023-11-18 13:02:34
当我们的系统时间不正常,比如设置一个日期-1999年9月9日,会引发证书问题。 系统时间不正常-IE有概率能访问 触发NavigateError事件,异常代码INET_E_INVALID_CERTIFICATE -- 这是一个必要不充分条件,系统时间不正常时IE有相关证书异常,更新时间能解决此类异常 ......
当我们的系统时间不正常,比如设置一个日期-1999年9月9日,会引发证书问题。
系统时间不正常-ie有概率能访问
触发navigateerror事件,异常代码inet_e_invalid_certificate
-- 这是一个必要不充分条件,系统时间不正常时ie有相关证书异常,更新时间能解决此类异常
系统时间不正常-cef完全无法访问
1.使用cef-demo,异常显示如下:
2.chromiumwebbrowser控件,此类异常也会触发loaderror事件
异常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添加设置 ,见: