Windows服务无法复制到文件共享
-
21-08-2019 - |
题
我有一个窗口服务设置为从本地目录中的文件复制到Samba共享。
在经由服务UNC路径连接到服务器(即\ REMOTESERVER \ shareddir)。
我已经登录的服务正在其下运行的用户,并且能够既拷贝文件和在桑巴共享创建文件,使用UNC路径。
但是,运行服务时我得到IO例外提示登录错误。我对那个盒子运行过程监控,看服务,我可以看到它找到的UNC路径,但得到试图写入共享时登录错误。
这是使用纯香草.NET System.IO.File.Copy呼叫。
我不明白的错误,因为相同的用户下登录时,我能够在共享复制和创建文件。
任何想法?
修改:异常文本强>
错误在主处理循环 (DoWork的()):登录失败:未知 用户名或密码错误。
System.Exception的:错误 MyService.ProcessExportTransferfileDirectories 和值:d:\出口, \ REMOTESERVER \ intray, d:\出口\ Archive文件---> System.IO.IOException:登录失败: 未知的用户名或密码错误。
在 System.IO .__ Error.WinIOError(的Int32 的errorCode,字符串maybeFullPath)在 System.IO .__ Error.WinIOError()在 System.IO.File.Move(字符串 sourceFileName,字符串destFileName)点击 在 MyService.Consumer.BusinessLogic.WmsFacade.MoveAndArchiveFile(字符串 sourceFolder,字符串targetFolder, 串archiveFolder,字符串 rootFolder,LogCategory logCategory, LogCounter logCounter)---结束 内部异常堆栈跟踪---在 MyService.Consumer.BusinessLogic.WmsFacade.MoveAndArchiveFile(字符串 sourceFolder,字符串targetFolder, 串archiveFolder,字符串 rootFolder,LogCategory logCategory, LogCounter logCounter)在 MyService.Consumer.BusinessLogic.WmsFacade.ProcessExportTransfer(IDictionary`2 fileDirectories)在 MyService.Core.TimedWorkerProvider.DoWork()
解决方案
这结束了权限问题 - 运行服务因为这是在其运行没有任何问题的Samba共享设置一个不同的用户,跨复制文件后
还是不明白,为什么使用不同的帐户时,我可以复制/创建使用Windows资源管理器,但是当该服务相同的帐户下运行它不能在所有访问共享共享中的文件:(
其他提示
我建议第一映射驱动器,然后执行文件复制到映射的驱动器,而不是共享。
可以映射使用DOS净使用命令的驱动器。例如:
System.Diagnostics.Process.Start("net", "use h: \remoteserver\shareddir /User:domian\me password")
这应该解决任何登录问题。
在您的情况的一个非常有用的工具是过程监控。只要运行它以管理员身份,并添加以下过滤器:
Process Name is "your_process.exe" AND Operation is "CreateFile"
您将看到有关你的进程试图使用这些文件的详细信息。
如所提到的,当我登录在与该 同一账户的服务 运行的,我没有问题复制 并创建共享中的文件。 - 奥德1分钟前
你授予用户帐户服务正在运行的“登录为服务”本地安全策略权限??