Windows服务将文件写入网络共享

时间:2009-05-20 11:46:42

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

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

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

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

想法?

5 个答案:

答案 0 :(得分:2)

首先检查路径是否符合您的想法。

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

答案 1 :(得分:2)

检查这些:

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您是如何访问共享的?安装目录是不是有机会?因此,假设\ server1 \ direcotry1已安装到z:\ directory1或类似的东西。如果是这样,您必须确保服务用户“看到”已安装的目录。或者使用标准UNC路径(使用双\)。

答案 4 :(得分:0)

FileSystemWatcher是否始终无法连接到UNC共享,或者在观察程序运行后是否会发生?

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