Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从windows服务创建文件/文件夹时的最佳做法_C#_Windows_Permissions_Windows Services - Fatal编程技术网

C# 从windows服务创建文件/文件夹时的最佳做法

C# 从windows服务创建文件/文件夹时的最佳做法,c#,windows,permissions,windows-services,C#,Windows,Permissions,Windows Services,我有一个作为普通用户运行的用户界面 用户界面通过tcp/ip与作为windows服务运行的服务器组件进行通信 该服务作为本地系统运行 我的问题是该服务在“ProgramData\MyApp”下创建了新文件夹。普通用户无法打开这些新创建的文件和文件夹,因为它们是由“系统”创建的 在安装过程中,“ProgramData\MyApp”目录的权限已经更改,因此每个人都有完全访问权限。但它不会被服务创建的子文件夹继承 服务是否应该更改已创建文件和文件夹的权限?或者,我可以准备“ProgramData\My

我有一个作为普通用户运行的用户界面

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

该服务作为本地系统运行

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

在安装过程中,“ProgramData\MyApp”目录的权限已经更改,因此每个人都有完全访问权限。但它不会被服务创建的子文件夹继承

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


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

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


如果您想让任何本地用户访问该文件夹,您可以使用
AddAccessRule
,请查看此处

请勿使用模拟。只需设置文件访问权限

下面是一个目录示例:(它对文件的作用相同)

MSDN:

  • 得到
  • 集合(举例)

Windows服务和用户界面应用程序是否在同一台计算机上运行?@Benjamin Windows服务正在更新文件夹的权限。文件夹可能会被一次又一次地创建。所以检查一下你的代码@是的,它们在同一台计算机上。因此,我可以直接打开文件。不需要通过tcp发送文件。虽然这也会是一个工作。RPC是通过tcp完成的,文件传输是直接的。@NipunAmbastha:文件夹只创建一次。检查目录是否存在。但如果它不存在,服务会创建它。好的,这至少与手动设置权限相同。我可以强制使用一个与“所有人”平等的帐户吗?我希望每个人都能阅读文件。你说的“每个人”是指用户组吗?是的,我的软件会将所有用户需要的内容保存在同一个目录中。我根本不关心窗口用户权限:)(我知道这不是真正的最佳实践)