问题回顾
- 之前写过一篇博客,介绍自己遇到的关于调用系统资源管理器崩溃的问题,详情请见:https://blog.youkuaiyun.com/weixin_44231643/article/details/100015536
- 在这篇文章中,我提到这个崩溃现象可能跟某些软件冲突相关。事实上也确实如此,在部分客户电脑上是跟百度输入法冲突。打开win10的事件查看器,可以看到都是百度输入法报的警告信息。
新的问题现象
- 在另外一部分用户电脑上,没有安装并使用百度输入法,但是在调用系统资源管理器的时候,程序依然崩溃。
解决方法
输入法冲突
- 替换输入法后问题解决
非输入法冲突
-
检查程序内调用的Windows API。如果有API在用户电脑上返回结果不正常,则考虑可能是该API没有正常返回造成跟系统资源管理器冲突。想办法替换或屏蔽或保证不多次调用该API后问题解决。
-
我定位的可能有问题的API是跟系统硬件有关的。注释掉wmiInfo.ReleaseWmi()这一句后再打开文件对话框后就不再崩溃。
CWmiInfo wmiInfo; wmiInfo.InitWmi(); CStringArray strResArray; CString strClassMem[] = {_T("Caption"),_T("AdapterRAM")}; wmiInfo.GetGroupItemInfo(_T("Win32_VideoController"),strClassMem,2,strResArray); wmiInfo.ReleaseWmi();