创建只能由 Windows 服务打开的文件
Create file that can be opened only by a Windows Service
是否可以
使用 DACL 字符串选择此类安全描述符,以便文件只能由 Windows 服务打开,而不能由普通进程打开,即使该进程由本地管理员帐户运行?
为了澄清,我只需要让非技术用户在记事本中打开它并篡改它就相当困难了。它不需要与一个愿意花一个月的生命来逆向工程和破解它的程序员对抗。
我更喜欢使用 DACL 而不是锁定文件来实现这一点,因为这样我的 Windows 服务就不需要一直运行文件来保护。
本地管理员帐户=上帝(至少在盒子上)。没有办法做到这一点。
您可以为运行服务定义一个特殊的特权帐户,并使受保护文件上的 ACL 仅允许该用户(以及所有计算机管理员)访问。 您可以禁止使用该服务帐户进行交互式登录。
如果您的主要关注点是交互式用户的篡改,则可能需要一个策略,默认情况下本地用户不会使用本地管理员权限运行。 不幸的是,您不能允许"部分"本地管理员权限 - 要么全有,要么全无。
我对 DACL 的了解还不够多,无法说明您是否或如何用它们完成您想要的事情。 除了将其限制为本地管理员帐户之外,我可以想到您可以采取的几件事来使某人更难篡改文件:
- 让您的服务自动启动,并立即打开文件,没有共享选项。 只要您的服务已打开它,另一个进程就无法打开它。
- 计算文件内容的哈希加上硬编码到服务中的盐,并将其存储在其他位置,例如,在另一个文件、注册表中,甚至在线。 下次打开文件时,请验证哈希,这将告诉您自上次打开文件以来是否有人篡改了该文件。
这些都不是万无一失的,但听起来你的目标只是让它变得更难。 没有万无一失的方法可以停止具有管理员权限的用户。
相关文章:
- Windows 后台服务(系统配置文件)无法使用 C++ 访问 win 10 上的用户 appData 文件夹?
- 打开 Docker 撰写文件中每个服务的外壳选项卡
- Win7 C++ - 从以用户身份登录的服务启动可执行文件的问题
- 如何在 Azure 应用服务中使用 cl.exe 编译 C++ 代码并生成可执行文件
- 无法从C++ Windows 服务执行批处理文件
- 如何将模板化服务传递到类中,而不在该类标头中包含该服务的头文件?
- 从Windows上的系统工作的服务中获取用户文档文件夹.C++
- 使用WinHttpReadData从简单php服务检索文件时删除的字符
- 为什么我不能在Windows Server 2008中使用System()从服务启动批处理文件
- 使用文件I/O正确创建和运行win32服务
- 如何将linux demon/服务的堆栈跟踪保存到外部文件中
- .vbs文件在windows服务中无法正常工作
- 创建 Windows 服务和批处理文件
- 我可以将一个可执行文件与另一个可执行文件(Windows 服务程序)组合在一起,并将该程序作为逻辑服务运行吗?
- 从服务启动的可执行文件中获取服务名称
- 服务加载程序找不到服务提供程序类,即使类与 META-INF/services 位于同一 JAR 文件中也是如此
- 使用什么样的API,您可以在OSX中执行read-consistent文件操作,类似于Windows卷影服务
- 其中是windows服务创建文件的默认目录
- 为什么我的windows服务不连续写入文件
- 如何将多个gsoap客户端web服务编译成一个可执行文件