Windows Defender拦截Launcher.exe调用Game.exe致游戏功能受限的解决方法咨询
兄弟我太懂你这种小独立开发者的难处了,Windows Defender的这种“误判”真的能把人折腾疯,结合我自己踩过的坑和社区里的经验,给你几个可行的方向试试:
调整Launcher调用Game.exe的行为,尽量贴近正常用户操作
用Qt的QProcess启动Game.exe时,别搞太“特殊”的操作:比如一定要设置工作目录为Game.exe所在的路径(调用QProcess::setWorkingDirectory()),模拟用户双击启动的场景;尽量避免使用CREATE_NO_WINDOW这类容易被Defender标记为“隐蔽启动”的参数,如果确实需要隐藏窗口,试试用Qt自带的窗口隐藏方法而非系统级的隐蔽启动标志;另外,启动Game.exe时用绝对路径明确指定,别让系统模糊解析路径,这也会降低Defender的警惕性。引导用户添加Defender排除项(友好提示而非强制)
直接让用户关Defender肯定行不通,但可以在Launcher里做个简单的检测:如果发现Game.exe启动后功能异常,就弹出友好提示,一步步教用户把游戏安装目录添加到Windows Defender的排除项里——比如:打开Windows安全中心 → 病毒和威胁防护 → 管理设置 → 添加或删除排除项 → 添加文件夹,选择你的游戏安装根目录。这种操作是官方允许的,用户接受度也比关Defender高很多。优化编译与程序元信息,降低可疑评分
MinGW编译的程序确实容易被Defender误判,你可以试试这些优化:用最新版本的MinGW编译,启用常规优化选项(比如-O2),避免生成奇怪的机器码;给Launcher和Game.exe添加完整的版本元信息(用Qt的rc资源文件或者MinGW的windres工具),填上产品名、版本号、开发者信息,有这些正规的元数据,Defender会降低对程序的可疑度。另外,检查Launcher里有没有类似直接读写其他进程内存、修改系统全局设置这类容易被标记为恶意的代码,如果有,尽量换成更温和的实现方式。针对受控文件夹访问的例外设置(如果是文件访问受限)
如果Game.exe的功能受限是因为无法读写某些文件/文件夹,那大概率是Defender的“受控文件夹访问”在搞鬼。可以引导用户把Game.exe和Launcher.exe添加到受控文件夹访问的允许列表里:打开Windows安全中心 → 病毒和威胁防护 → 勒索软件防护 → 允许应用通过受控文件夹访问 → 添加允许的应用,选择你的两个exe文件。提交误报给微软,从根源解决问题
这个方法虽然见效慢,但能一劳永逸解决其他用户的问题。你可以把你的Launcher.exe和Game.exe上传到微软官方的误报提交渠道,说明这是你开发的独立游戏的启动器和主程序,没有任何恶意行为。微软审核确认是误报后,会更新Defender的病毒库,之后其他用户就不会再遇到这个拦截问题了,而且这个操作完全免费,就是需要花点时间等审核。
备注:内容来源于stack exchange,提问作者Ivan Klenov




