我有一个用C#编写的应用程序,它是通过InnoSetup安装的。
启用Windows 10 Defender的受控文件夹访问后,即使以管理权限运行,安装程序也无法创建桌面图标(显示消息PersistFile::Save failed, code 0x80070002
)。
此外,已安装的应用程序(未以管理权限运行)无法写入用户的文件夹,例如文档。
即使对于新文件或文件夹,也不会覆盖现有文件,这也会发生。对于勒索软件保护,我希望仅修改现有文件被认为是危险的。
我想到的第一个问题是:为什么我的应用程序被认为是有害的,因此被阻止了?
我已经进行了广泛的研究以获得答案,但是找不到任何有帮助的东西:
Mircosoft的Web资源描述了哪些应用程序被认为是有害的以及为什么找不到它-只能在那儿猜测。
使用扩展验证证书(有助于抑制SmartScreen警告)对我的应用程序签名不会改变Windows Defender的行为。
我让Windows App认证工具包分析安装程序-报告了一些警告和一个严重错误。我修复了该工具包抱怨的所有问题(关于/ SAFESEH的警告除外,这在InnoSetup中是不可能的),但这并没有改变Windows Defender关于访问阻止的行为。
因此,我要提炼的问题是:如何有效地绕过Windows Defender的设置和应用程序访问阻止?
为了深入了解问题并为实验提供基础,我在C#中设置了一个小型示例应用程序,
使用Visual Studio构建解决方案,并使用InnoSetup打包构建,使用启用受控文件夹访问的行为应该很容易。 (确保查看README.md以获得对构建步骤的描述!)
请签出sample project。