使用 DACL 字符串选择此类安全描述符,以便文件只能由 Windows 服务打开,而不能由普通进程打开,即使该进程由本地管理员帐户运行?
为了澄清,我只需要让非技术用户在记事本中打开它并篡改它就相当困难了。它不需要与一个愿意花一个月的生命来逆向工程和破解它的程序员对抗。
我更喜欢使用 DACL 而不是锁定文件来实现这一点,因为这样我的 Windows 服务就不需要一直运行文件来保护。
本地管理员帐户=上帝(至少在盒子上)。没有办法做到这一点。
您可以为运行服务定义一个特殊的特权帐户,并使受保护文件上的 ACL 仅允许该用户(以及所有计算机管理员)访问。 您可以禁止使用该服务帐户进行交互式登录。
如果您的主要关注点是交互式用户的篡改,则可能需要一个策略,默认情况下本地用户不会使用本地管理员权限运行。 不幸的是,您不能允许"部分"本地管理员权限 - 要么全有,要么全无。
我对 DACL 的了解还不够多,无法说明您是否或如何用它们完成您想要的事情。 除了将其限制为本地管理员帐户之外,我可以想到您可以采取的几件事来使某人更难篡改文件:
- 让您的服务自动启动,并立即打开文件,没有共享选项。 只要您的服务已打开它,另一个进程就无法打开它。
- 计算文件内容的哈希加上硬编码到服务中的盐,并将其存储在其他位置,例如,在另一个文件、注册表中,甚至在线。 下次打开文件时,请验证哈希,这将告诉您自上次打开文件以来是否有人篡改了该文件。
这些都不是万无一失的,但听起来你的目标只是让它变得更难。 没有万无一失的方法可以停止具有管理员权限的用户。