【问题标题】:Windows service writing files to network shareWindows 服务将文件写入网络共享
【发布时间】:2010-10-27 14:40:33
【问题描述】:

我有一个正在运行的 Windows 服务,它将文件从监视文件夹 (IO.FileSystemWacher) 移动到网络上的 UNC 共享。

网络共享是安全的,但该共享对服务用户具有完全控制权;尽管如此,我还是遇到了找不到文件路径的问题。

我打算冒充服务(当前)用户,但不确定这是否是正确的方法。

想法?

【问题讨论】:

  • 如果您找不到 UNC 共享的路径,那么您可能只是使用了错误的路径。或者您是否收到某种拒绝访问的消息。
  • 这是一条拒绝访问消息,定向到我获得的域帐户。在此运行的域帐户没有交互式登录权限,但可以访问网络中的特定共享,并且能够在主机上运行应用程序和服务。

标签: .net file-io windows-services impersonation


【解决方案1】:

尝试授予运行服务的计算机的计算机帐户访问共享的权限。 或者,在域帐户下运行服务(显然可以访问共享)

【讨论】:

  • 我没有这些权限。我在一个客户站点上工作,这是我可以直接访问的仅有的 3 台机器之一。我可以访问我们的网络服务器和我们的数据库实例,但我无法访问其他机器。
【解决方案2】:

首先检查路径是你认为的。

要检查权限,您可以在服务帐户的身份下运行Internet Explorer(执行runas),然后将路径放在URL框中,以检查服务帐户是否可以访问该路径。

【讨论】:

  • 如果我作为服务帐户连接,我可以映射到驱动器。共享存在,我似乎无法访问该文件。
【解决方案3】:

检查这些:

  • 您的服务用户是域帐户吗? (本地账户不行)
  • 服务用户是否对 UNC 共享具有 NTFS 写入权限? (共享级权限不够,还必须有NTFS权限)

【讨论】:

  • 您很可能会遇到 NTFS 和共享权限不同的情况。他们是,现在供应商基础架构团队提出了一个案例。谢谢
【解决方案4】:

您如何访问共享?不是挂载目录吗?所以可以说 \server1\direcotry1 安装到 z:\directory1 或类似的东西。如果是这样,您必须确保服务用户“看到”已安装的目录。或者使用标准 UNC 路径(使用双 \)。

【讨论】:

  • 正在使用标准 UNC 路径访问共享。
【解决方案5】:

FileSystemWatcher 总是无法连接到 UNC 共享,还是在 watcher 运行后发生?

我已经看到,如果您重新启动监视文件夹所在的计算机,则在另一台计算机上运行的 FileSystemWatcher 将不再看到更改事件。要解决此问题,您需要重新启动观察程序。我相信您可以使用 EnableRaisingEvents 属性来执行此操作。

【讨论】:

  • 蒂姆,如果您仔细阅读问题,他并没有指定 FileWatcher 正在查看 UNC 共享。不过,您所说的是 FileSystemWatcher 的一个真正问题。你看到了吗:codeproject.com/KB/vb/AdvancedFileSystemWatcher.aspx
  • 当我开始这个开发时,我检查的第一件事就是我可以通过文件观察器观看 UNC 共享。监视文件夹中的文件将被移动,以便对其进行处理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多