c# - 从 Windows 服务创建文件/文件夹时的最佳实践

标签 c# windows permissions windows-services

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

用户界面通过 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/

相关文章:

c# - 在csv文件的下一列中写入c#

windows - 了解 Windows 的系统调用调度程序?

c - Windows 上下文菜单 %1 使用错误的变音符号扩展文件名

mysql - #1130 - 不允许主机 ‘localhost’ 连接到此 MySQL 服务器

security - 如何使用 WScript.Shell 对象调试 ASP 权限问题?

c# - ActiveX DLL 锁定主 UI 线程

C# SqlTransaction.Commit 抛出异常,因为 Connection 为空

c# - 使用 epplus 创建临时 excel 文件?

c++ - 从 C++ 中的当前目录复制文件(Windows API)

java - 配置JNLP的权限 :