【问题标题】:How should I install/run my service?我应该如何安装/运行我的服务?
【发布时间】:2011-11-09 15:27:14
【问题描述】:

我遇到以下情况:我正在构建一个需要服务的应用程序。该服务有时会为用户创建文件和文件夹(它实际上接收文件,然后将其写入磁盘)。

我的问题如下:

  1. 如果“标准用户”(即非管理员)使用应用程序(包括服务),则该用户甚至无法读取服务创建的文件,因为他没有权限,因为它似乎(“访问被拒绝”)。但是管理员用户之后可以看到相同的文件。

  2. 如果服务正在为管理员用户在桌面上创建一个文件夹(我没有尝试使用像 C: 这样的目标),那么管理员用户甚至看不到该文件夹​​,因为权限 (该文件夹没有出现,但如果我在 cmd 中使用“dir”命令,它仍然会进入列表;而如果我停止服务,该文件夹会自动被删除 - 我不知道为什么)。但是,我尝试让服务在桌面上的一个文件夹中创建一个文件夹(之前我已经创建的文件夹),并且它工作正常。

所以我知道该服务的问题与它的安装/运行方式有关。目前,它在“LocalSystem”上(我尝试使用带有“LocalService”的 sc.exe 命令使用 cmd 安装它,但它无法识别“LocalService”)。

那么,有没有一种方法可以让我的服务创建文件和文件夹,供用户根据需要读取/写入它们?

如果是,请告诉我怎么做。

附:到目前为止,我已经使用了一个 .bat 文件来调用 sc.exe 来安装和启动服务。可以吗?

【问题讨论】:

  • 我认为您只需直接在文件/文件夹上设置安全描述符。

标签: windows service installation


【解决方案1】:

是的,答案似乎是:必须明确设置安全描述符。 原因之一似乎是文件实际上是在 C:\Windows\Temp 目录中创建的,然后被移动到预期的目标路径。但是,正在创建的文件夹(直接在所选路径上,例如 C:\Users\Admin\Desktop\MyFolder)是不可见的。因此,唯一的解决方案似乎是明确设置安全描述符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 2018-02-13
    • 2018-05-10
    相关资源
    最近更新 更多