gpt4 book ai didi

c# - 对 Windows 服务具有 WRITE 权限而对其他应用程序只有 READ 权限的文件夹

转载 作者:太空狗 更新时间:2023-10-29 23:36:17 27 4
gpt4 key购买 nike

我想从 Windows 服务写入一些文件,并能够从其他应用程序读取它们。但我不希望其他应用能够写入此文件夹。

是否有一个标准的文件夹(比如有用于存储不必从其他应用读取的数据的应用数据)?

最佳答案

重要的是要考虑到 Windows 根据用户(或他所属的组)和文件系统中的 ACL 条目来设置读写文件的权限。所以“阻止其他应用写入此文件夹”实际上是“在普通用户下启动的其他应用”。

您可以将服务放在

下的目录中

C:\Program Files,

例如

C:\Program Files\CompanyName\ServiceInstallDir

如果该服务在本地SYSTEM 帐户下运行,则它具有写入此文件夹的权限。普通用户只有读取权限。

但请注意,这不是万无一失的,您永远不知道是否有管理员权限的人在安装后更改了您文件夹的权限。

只有在我可以控制系统和其他应用程序时(例如,在具有 Active Directory 和域中所有计算机的公司基础架构中),我才会这样做。

另请注意,“其他应用”也可以是在 SYSTEM 下运行的 Windows 服务或具有本地管理员权限的其他用户,因此它们也可以写入您的文件夹。

另一种解决方案是在专用用户帐户(本地或 Active Directory)下运行该服务,并设置文件夹的权限,以便只有该用户具有修改权限。

请注意,您必须授予此用户帐户“作为服务登录”的权限(通过本地安全策略或 AD GPO)。

但即使在这种情况下:如果其他(管理员)用户拥有恢复权限,他也可以绕过 ACL。

另一个重要提示:

在 SYSTEM 下运行该服务意味着该服务具有高权限,这可能存在安全风险。


eryksun 的重要提示(见评论)谢谢!

另见 https://blogs.technet.microsoft.com/voy/2007/03/22/per-service-sid/

因此您可以防止其他服务写入您的文件。

关于c# - 对 Windows 服务具有 WRITE 权限而对其他应用程序只有 READ 权限的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48642512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com