在Windows XP系统里,如果一个程序出错了,就会产生一个程序错误报告,并且可以发送到微软去。对于用户自己开发的程序出错,并不需要发送到微软去,因为那样做是没有什么作用的,毕竟微软不会帮我们改正程序的,那么怎么样来修改出错时不发送到弹出程序出错报告呢?现在就来看看第二人生里是怎么样实现的吧。它的代码如下:
#001 void LLAppViewerWin32::disableWinErrorReporting()
#002 {
#003 const char win_xp_string[] = "Microsoft Windows XP";
下面判断是否XP系统。
#004 BOOL is_win_xp = ( getOSInfo().getOSString().substr(0, strlen(win_xp_string) ) == win_xp_string );      /* Flawfinder: ignore*/
#005 if( is_win_xp )
#006 {
#007 // Note: we need to use run-time dynamic linking, because load-time dynamic linking will fail
#008 // on systems that don't have the library installed (all non-Windows XP systems)
是XP系统,就加载异常报告的动态连接库faultrep.dll。
#009 HINSTANCE fault_rep_dll_handle = LoadLibrary(L"faultrep.dll");            /* Flawfinder: ignore */
#010 if( fault_rep_dll_handle )
#011 {
获取函数AddERExcludedApplicationA来设置一个程序不要产生异常报告。
#012 pfn_ADDEREXCLUDEDAPPLICATIONA pAddERExcludedApplicationA = (pfn_ADDEREXCLUDEDAPPLICATIONA) GetProcAddress
#013 (fault_rep_dll_handle, "AddERExcludedApplicationA");
#014 if( pAddERExcludedApplicationA )
#015 {
#016 
#017 // Strip the path off the name
下面获取应用程序的名称,然后设置程序不产生异常报告。
#018 const char* executable_name = gDirUtilp->getExecutableFilename().c_str();
#019 
#020 if( 0 == pAddERExcludedApplicationA( executable_name ) )
#021 {
#022 U32 error_code = GetLastError();
#023 llinfos << "AddERExcludedApplication() failed with error code " << error_code << llendl;
#024 }
#025 else
#026 {
#027 llinfos << "AddERExcludedApplication() success for " << executable_name << llendl;
#028 }
#029 }
释放动态连接。
#030 FreeLibrary( fault_rep_dll_handle );
#031 }
#032 }
#033 }
通过这个函数的设置,就可以修改第二人生程序产生异常时,并不产生XP的异常报告,只会生成第二生自己的错误报告,并发送到自己的服务器上。

第二人生的源码分析(三十九)关闭WinXP的错误报告功能相关推荐

  1. 【转】ABP源码分析三十九:ABP.Hangfire

    ABP对HangFire的集成主要是通过实现IBackgroundJobManager接口的HangfireBackgroundJobManager类完成的. HangfireBackgroundJo ...

  2. spark 源码分析之十九 -- DAG的生成和Stage的划分

    上篇文章 spark 源码分析之十八 -- Spark存储体系剖析 重点剖析了 Spark的存储体系.从本篇文章开始,剖析Spark作业的调度和计算体系. 在说DAG之前,先简单说一下RDD. 对RD ...

  3. ABP源码分析三十四:ABP.Web.Mvc

    ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...

  4. 【转】ABP源码分析三十五:ABP中动态WebAPI原理解析

    动态WebAPI应该算是ABP中最Magic的功能之一了吧.开发人员无须定义继承自ApiController的类,只须重用Application Service中的类就可以对外提供WebAPI的功能, ...

  5. 【转】ABP源码分析三十四:ABP.Web.Mvc

    ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...

  6. 【转】ABP源码分析二十九:ABP.MongoDb

    这个Module通过建立一个MongoDbRepositoryBase<TEntity> 基类,封装了对MongoDb数据库的操作. 这个module通过引用MongoDB.Driver, ...

  7. ABP源码分析三十:ABP.RedisCache

    ABP 通过StackExchange.Redis类库来操作Redis数据库. AbpRedisCacheModule:完成ABP.RedisCache模块的初始化(完成常规的依赖注入) AbpRed ...

  8. 【转】ABP源码分析三十六:ABP.Web.Api

    这里的内容和ABP 动态webapi没有关系.除了动态webapi,ABP必然是支持使用传统的webApi.ABP.Web.Api模块中实现了一些同意的基础功能,以方便我们创建和使用asp.net w ...

  9. 【转】ABP源码分析三十二:ABP.SignalR

    Realtime Realtime是ABP底层模块提供的功能,用于管理在线用户.它是使用SignalR实现给在线用户发送通知的功能的前提 IOnlineClient/OnlineClient: 封装在 ...

  10. 【转】ABP源码分析三十:ABP.RedisCache

    ABP 通过StackExchange.Redis类库来操作Redis数据库. AbpRedisCacheModule:完成ABP.RedisCache模块的初始化(完成常规的依赖注入) AbpRed ...

最新文章

  1. 反弹和补遗:再论Bjarne Stroustrup的基于对象的含义
  2. java如何实现连接wifi_java-是否可以检测到您要连接的WiFi类型?
  3. spring boot 1.5.4 整合 mybatis(十二)
  4. Java在线问题诊断工具Greys
  5. sqli-labs(十三)(hpp)
  6. 按钮隐藏_Win10系统:如何隐藏登录界面右下角的电源按钮?(两种方法)
  7. Netweaver的传输机制和SAP Cloud for Customer
  8. 找不见matlab保存的txt,为什么自己保存的M文件在电脑里找不见,看不见而matlab里却能打开也能看到?...
  9. LeetCode 1203. 项目管理(两次拓扑排序)
  10. 论文浅尝 - ICML2020 | 拆解元学习:理解 Few-Shots 任务中的特征表示
  11. 自己动手架设linux下Web服务器(图)6
  12. 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】05、Shiro集成
  13. 北京环球影城上线王者荣耀英雄主题活动
  14. gulp教程之gulp-minify-css
  15. 李佳琦薇娅直播预告等微博文章采集转链
  16. 基于SWMM及自主开发城市内涝一维二维耦合软件的复杂城市排水系统建模技术及在城市排涝、海绵城市等领域实践
  17. 微信终于能注册小号了,无需绑定手机号!
  18. 西电计科计算机视觉期末复习笔记
  19. PHP有没有 原子性,PHP程序的原子性和PHP的文件锁
  20. ARC101E Ribbons on Tree 容斥原理+dp

热门文章

  1. 神临的 Unity shader 学习之多Pass渲染 (九)
  2. 关于DSP28335CCS6编译报错error #10099-D: program will not fit into available memory.
  3. 服务器搭建ftp共享文件夹,设置共享文件夹或者搭建FTP服务器。
  4. 水逆期自我救赎:MacBook pro进水
  5. GPS原始RMC数据解析之DDMM.MMMM
  6. ESP8266 开发之旅 网络篇 无线更新 --OTA 固件更新
  7. 计算机技能大赛总结汇报大学,计算机专业技能大赛总结
  8. 量化交易10-backtrader回测乌云盖顶K线形态图
  9. 如何让Bing(必应)快速收录你的网站
  10. 新网站如何让百度快速收录,百度快速收录详细操作教程