我有一个 Windows 桌面软件,需要将新文件夹/文件写入%USERPROFILE%\Documents\
文件夹。在“勒索软件保护”下有一个 Windows 选项,用于保护“受控文件夹”。通常,该选项是禁用的,但有些客户启用了该选项,这导致我的应用程序在启动时崩溃(因为它无法写入文件夹)。
此“授权”无法通过管理员权限绕过,即如果您以管理员身份运行该应用程序,该应用程序仍会被 Windows 阻止。该应用程序由来自受信任证书颁发机构的带时间戳的证书进行数字代码签名。尽管如此,这个“受控文件夹访问”仍会阻止我的应用程序。
通常,我的软件的用户不会启用此选项,但有些人会启用。我希望避免我们必须指示客户“将我们的软件添加到勒索软件保护例外”......这似乎不专业且不可靠。但目前,这是我能让它发挥作用的唯一方法。
当我部署我的应用程序时,我能做什么才能被 Windows 接受并写入 Documents 文件夹?
编辑:例如,如果我可以通过命令行添加例外,我可以尝试让安装程序运行此类命令(这需要管理员权限)。但我不确定这是否可行。
答案1
微软文章 通过受控文件夹访问保护重要文件夹 不幸的是这样说:
脚本引擎不受信任,您不能允许它们访问受控的受保护文件夹。例如,即使您使用证书和文件指示器允许,PowerShell 也不会受到受控文件夹访问的信任。
您唯一的选择是将您的应用程序设置为受信任。
文章 自定义受控文件夹访问 对于使用以管理员身份运行的 PowerShell 有以下建议:
输入以下 cmdlet:
Add-MpPreference -ControlledFolderAccessAllowedApplications "<the app that should be allowed, including the path>"
例如,要添加位于文件夹 C:\apps 中的可执行文件 test.exe,cmdlet 将如下所示:
Add-MpPreference -ControlledFolderAccessAllowedApplications "c:\apps\test.exe"