锁定文件以便仅由一个程序写入?

jam*_*son 2 windows-7

是否可以在 Windows 7 中锁定文件以仅由一个程序写入?任何人都可以拥有读取或复制访问权限,但我需要仅由一个程序完成写入/移动/删除操作。

use*_*686 6

典型答案:。Windows NT 安全性适用于 SID(用户、组、特殊组...)。程序没有 1 2可以使用的唯一 SID,并且您不能向任何 ACL 添加进程名称或路径。

由同一用户运行的所有程序都具有相同的 SID——该用户及其所在的所有组的 SID。(每个会话的登录 SID 都不同,但它在一个会话中仍然保持不变。)

但是,您可以为该程序创建一个单独的用户帐户,然后使用“运行方式...”来启动该程序。该帐户可以轻松地从“欢迎”屏幕中隐藏。

runas /user:myapp /savecred /noprofile "myapp.exe"
Run Code Online (Sandbox Code Playgroud)

某些程序(通常是病毒防病毒工具)安装系统驱动程序,这些驱动程序将 Windows 内核功能挂钩以禁止修改某些文件或注册表值,除非某些进程(例如,只允许从其自己的 GUI 禁用防病毒软件)。这需要大量的工作(编写驱动程序,确保它不会使用户的系统崩溃,找到一种方法来验证进程......)并且可能无法在更高的 Windows 版本(Vista 及更高版本)中可靠地工作。


1从 Windows Vista 和 Server 2008 开始,Windows服务确实获得了唯一的 SID。(但是,它们也失去了交互运行的能力,因此这对您没有帮助。)

2 Windows 8 中的 Metro 应用程序有自己的 SID,称为应用程序容器 SID

  • “为应用程序创建帐户”技巧实际上是微软自己使用的。这通常是 SQL Server 管理其自身权限的方式。您将看到一个名为“NT SERVICE\SQLAgent$SQL2008”的用户/组,该程序使用该名称。另一个经典示例是随 IIS 一起安装的“ASPNET”用户。 (2认同)