在 Windows,如何限制仅某些应用程序(而非用户)对文件夹、子文件夹和文件的访问

On Windows, how to restrict access to a folder, sub folder and files by only some applications (not users)

我们有一个应用程序,它不是按用户使用的,可以同时供多个用户使用,数据也由所有用户共享。所以我们使用数据文件夹的路径是 ProgramData\OurAppName\Data (post Vista) 并赋予所有用户完全控制权,这样我们的应用程序 运行 就可以对数据文件夹下的文件进行更改。

现在的问题是,任何其他应用程序 (malware/virus) 也可以修改文件,即可以对我们应用程序的数据文件进行攻击。我们的应用程序是 Win32 桌面应用程序。

我们是否可以限制只有我们的应用程序才能访问 Data 文件夹?

Windows 安全模型是针对每个用户的,而不是针对每个应用程序的。因此,没有内置方法可以根据发出请求的应用程序来限制对文件的访问。

正确的解决方案是让服务器程序(运行在实际服务器上运行,或者作为本地计算机上的系统服务)独占访问文件(这是有效的,因为服务器程序将 运行ning 作为不同的用户)和客户端应用程序(最终用户 运行 的应用程序)通过服务器发出所有请求。然后服务器可以审查请求以确保它们在执行之前没有破坏性。

可能的临时解决方案将包括一个系统服务,该系统服务将对文件的访问权交给您的应用程序(通过句柄复制)或一个文件系统过滤器驱动程序。这些方法可以很容易地绕过,但可能足以抵御并非专门针对您的应用程序的常见病毒。