(请在将其标记为重复之前阅读,谢谢。)
描述
我正在开发自己的 Win32 x86_64 应用程序,该应用程序严重干扰系统,能够通过 Win32 API 与驱动程序通信,并且需要管理员访问权限。但它仍然是一个有效的 Win32 应用程序(不是驱动程序!),我想像我正在开发的其他应用程序一样在本地计算机上测试它。我在这里没有做任何特别的事情。
由于以下错误消息,无法启动此特定应用程序:
Your organization used Windows Defender Application Control to block this app.
<path to exe file>
Contact your support person for more info.
由于这是一台本地开发机器,不属于任何域,我想知道为什么它甚至说“组织”,但是......我猜只是 Windows 10 的东西。
为了使它运行,我做了以下事情(但都无济于事):
- 禁用安全启动
- 禁用 Windows Defender 应用程序防护
- 禁用 Windows Defender
- 在“设置”应用中禁用与 Windows Defender 相关的任何内容
- 通过以下方式禁用与 Windows Defender 相关的任何内容
gpedit
- 确保已
App & browser control
禁用 - 在 Windows Defender 中将该应用程序添加为例外(即使它已关闭)
- 通过以下方式禁用签名驱动程序强制执行
gpedit
- 根据禁用策略此 MSDN 文档
- 已确认我从未运行过并且没有运行 Windows 10 S 变体
- 启用测试签名
- 遵循无数的教程:1,2,3,4,5,6
- 尝试在另一台笔记本上启动同一个应用程序
- 尝试在刚刚安装Windows 10 Pro 21H1 VM(用于验证问题)
- 将应用程序发送给朋友,让他在他的机器上进行测试
以上方法均无效。我能够启动应用程序的唯一配置是启用测试签名并使用测试证书对我的应用程序进行签名。仅在未启用测试签名的情况下对其进行签名会出现相同的错误。
这显然是不可接受的。我这里处理的不是驱动程序,而是普通的 Win32 应用程序,因此不需要启用测试签名。我不喜欢在日常使用的开发机器上启用测试签名(从而禁用安全启动)。
我只要签名并启动它就行了。更让我困惑的是,我无法禁用这个 Windows Defender 应用程序控制,尽管它似乎还没有安装。
问题
我如何才能一劳永逸地摆脱 Windows Defender 应用程序控制?
环境
- 完全激活、合法的 Windows 10 Pro 21H1 x64(应用最新更新)
- Visual Studio 2019 16.10
- 应用程序针对 x86_64 进行编译
答案1
请检查您的链接器选项,并确保您未指定 /INTEGRITYCHECK 链接器选项。该选项在您的二进制文件中设置 Dll 特性“检查完整性”,这将改变 Windows/Defender 在加载时执行代码完整性检查的方式。当 Defender 应用程序控件阻止它时,您甚至可以在 CodeIntegrity 事件日志中看到错误。