尝试访问映射驱动器时,文件复制在服务中失败

时间:2013-09-16 12:51:12

标签: c# windows-services

我正在尝试使用我的Windows服务(作为网络服务运行)中的File.Copy()复制文件。

File.Copy(sourceFile, targetFile, true);

麻烦的是,当目标位于映射的网络驱动器上时,我收到错误:

  

找不到路径'Z:\ copiedfile.txt'

的一部分

我发现someone else在2006年遇到了这个问题,但是这个帖子有一个不愉快的结局:OP放弃并找到了解决方法。

过去7年是否发现了任何解决方案?

2 个答案:

答案 0 :(得分:5)

映射是每用户会话项,这意味着虽然映射可能存在于您的桌面上,但它在服务中不存在。您需要使用UNC路径来复制文件。

答案 1 :(得分:2)

  

服务不应直接访问本地或网络资源   通过映射驱动器号。此外,服务不应使用   WNetXXXXXXX API用于添加,删除或查询任何映射驱动器   字母。虽然WNetXXXXXXX API可能会成功返回,但是   结果不正确。服务(或正在运行的任何进程)   在不同的安全上下文中)必须访问远程资源   应该使用通用命名约定(UNC)名称来访问   资源。

http://social.msdn.microsoft.com/Forums/vstudio/en-US/f9a702da-724b-4acc-a1bb-ac4d225838c8/copy-file-to-a-mapped-drive

http://support.microsoft.com/kb/180362/en-us