我有一个以普通用户身份运行的用户界面。
用户界面通过 tcp/ip 与作为 Windows 服务运行的服务器组件进行通信。
该服务作为本地系统运行。
我的问题是该服务在“ProgramData\MyApp”下创建了新文件夹。这些新创建的文件和文件夹无法由普通用户打开,因为它们是由“系统”创建的。
在安装过程中,目录“ProgramData\MyApp”的权限已更改,以便每个人都具有完全访问权限。但它不会被服务创建的子文件夹继承。
该服务是否应该更改创建的文件和文件夹的权限?或者我可以准备“ProgramData\MyApp”文件夹以允许每个人访问新创建的文件和文件夹吗?
已修复:我的问题是从临时目录复制了具有错误权限的文件。 temp 目录的权限已被继承...
最佳答案
如果您的 Windows 服务作为本地系统运行,您应该使用 impersonation 事件用于创建文件夹的代码。这样,调用该服务的用户将拥有文件夹和文件的完全权限。
如果您希望任何本地用户都可以访问该文件夹,您可以使用AddAccessRule
,请查看此处 C# - Set Directory Permissions for All Users in Windows 7
关于c# - 从 Windows 服务创建文件/文件夹时的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13083893/