从Windows服务创建文件/文件夹时的最佳做法

时间:2012-10-26 09:02:09

标签: c# windows permissions windows-services

我有一个以普通用户身份运行的用户界面。

用户界面通过tcp / ip与作为Windows服务运行的服务器组件进行通信。

该服务作为本地系统运行。

我的问题是该服务在“ProgramData \ MyApp”下创建了新文件夹。普通用户无法打开这些新创建的文件和文件夹,因为它们是由“系统”创建的。

在设置过程中,目录“ProgramData \ MyApp”的权限已经更改,以便每个人都具有完全访问权限。但它不是由服务创建的子文件夹继承的。

服务是否应该更改已创建文件和文件夹的权限?或者我可以准备“ProgramData \ MyApp”文件夹以允许每个人访问新创建的文件和文件夹吗?

修复:我的问题是从temp目录复制了具有错误权限的文件。临时目录中的权限已被继承......

2 个答案:

答案 0 :(得分:2)

如果您的Windows服务作为本地系统运行,则应使用impersonation作为创建文件夹的代码。这样,调用该服务的用户将拥有文件夹和文件的完全权限。

如果您希望任何本地用户都可以访问该文件夹,可以使用AddAccessRule,请查看C# - Set Directory Permissions for All Users in Windows 7

答案 1 :(得分:0)

不要使用假冒。只需设置文件访问权限。

以下是目录的示例:https://stackoverflow.com/a/5398398/70386(它对文件的作用相同)

MSDN: