【问题标题】:Creating file using windows service使用 windows 服务创建文件
【发布时间】:2012-02-07 21:21:59
【问题描述】:

我编写了一个 Windows 服务,它在本地驱动器(C:\Testing 文件夹)上创建一个文件。

我已经安装了这个服务。我从 IIS 中托管的 Web 应用程序启动此服务。

如果我在服务代码中硬编码此路径,服务工作正常,但如果我将路径通过 Web 应用程序传递到 Web 服务,事件日志显示异常

服务无法启动。 System.UnauthorizedAccessException:对路径“C:\Testing”的访问被拒绝。

我在我的机器上拥有管理员访问权限,并且我正在使用同一个帐户启动服务。我怎样才能摆脱这个异常?

【问题讨论】:

  • 您必须为 LOCAL SERVICE 用户帐户(或运行您的服务的任何用户帐户)向您的测试文件夹添加写入权限。
  • 或者使用通常已经配置为所有人使用的文件夹,例如温度
  • Web 应用程序和 Windows 服务之间如何通信?您确定访问路径的是服务,而不是使用服务代码的 Web 应用吗?
  • @SpikeX:我授予本地服务帐户对测试文件夹的完全权限。我还授予了 Windows 登录帐户的完全权限。仍然得到同样的异常

标签: c# windows-services


【解决方案1】:

正如 SpikeX 所说,您的服务需要对文件夹 c:\Testing 具有读写权限

右键单击文件夹并更改安全权限。本地系统帐户的“本地服务”:

或者,如果您的服务在特定帐户下运行(例如您自己的 Windows 管理员帐户),请授予该帐户对该文件夹的写入权限。

Services.msc 中的服务安全选项卡:

【讨论】:

    【解决方案2】:

    我犯了一个愚蠢的错误。我还需要提供文件名和路径。它现在工作正常。感谢回复

    【讨论】:

      【解决方案3】:

      您可以尝试使用 Process Monitor 之类的东西来验证哪个帐户正在尝试写入 C:\Testing。可能是您所期望的帐户以外的帐户正在尝试创建该文件。

      【讨论】:

        【解决方案4】:

        当您在本地系统上映射驱动器时,在这种情况下,您应该授予您通过 Windows 服务访问的共享文件夹上的网络服务的权限。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-24
          • 2016-05-29
          • 2011-05-15
          • 1970-01-01
          • 1970-01-01
          • 2011-04-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多