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

C# 尝试访问映射驱动器时,服务中的文件复制失败,c#,windows-services,C#,Windows Services,我正在尝试使用file.copy()从我的Windows服务(作为网络服务运行)复制文件 问题是,当目标位于映射的网络驱动器上时,我得到一个错误: 找不到路径“Z:\copiedfile.txt”的一部分 我在2006年发现了谁有这个问题,但那个帖子有一个不愉快的结局:OP放弃了,找到了一个解决办法 在过去7年中是否发现了任何解决方案?映射是每个用户的会话项,这意味着映射可能存在于桌面上,但不存在于服务中。您将需要使用UNC路径来复制文件。映射是每个用户的会话项,这意味着映射可能存在于桌面上,但

我正在尝试使用
file.copy()
从我的Windows服务(作为网络服务运行)复制文件

问题是,当目标位于映射的网络驱动器上时,我得到一个错误:

找不到路径“Z:\copiedfile.txt”的一部分

我在2006年发现了谁有这个问题,但那个帖子有一个不愉快的结局:OP放弃了,找到了一个解决办法


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

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

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

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

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


您是否尝试过使用完整的网络路径而不是驱动器映射?@abelenky-updated;不确定增加了多少。@crashmstr-I最初使用的是完整的网络路径,但这是有问题的,因为网络服务没有远程计算机的权限,远程计算机位于不同的域上。我使用不同的凭据创建了映射来解决这个问题。您是否尝试使用完整的网络路径而不是驱动器映射?@abelenky-updated;不确定增加了多少。@crashmstr-I最初使用的是完整的网络路径,但这是有问题的,因为网络服务没有远程计算机的权限,远程计算机位于不同的域上。我使用不同的凭据创建了映射以解决此问题。使用UNC路径是有问题的,因为远程计算机位于不同的域上,我需要使用不同的凭据进行连接。这就是为什么我使用具有所需凭据的映射驱动器。@AshBurlaczenko服务不应该映射驱动器-它们是非常有限的resource@Shaul服务不了解用于映射驱动器的帐户凭据。您可以使用模拟来访问资源的保存凭据,或者您可以考虑在已知的用户ActoTk下运行服务,谢谢,至少您已经解释了为什么我的代码不起作用,所以这是您的答案。稍后我可能会问另一个问题,关于如何解决这个问题。。。也许我会使用ftp…使用UNC路径是有问题的,因为远程计算机位于不同的域上,我需要使用不同的凭据进行连接。这就是为什么我使用具有所需凭据的映射驱动器。@AshBurlaczenko服务不应该映射驱动器-它们是非常有限的resource@Shaul服务不了解用于映射驱动器的帐户凭据。您可以使用模拟来访问资源的保存凭据,或者您可以考虑在已知的用户ActoTk下运行服务,谢谢,至少您已经解释了为什么我的代码不起作用,所以这是您的答案。稍后我可能会问另一个问题,关于如何解决这个问题。。。也许我会使用ftp。。。
File.Copy(sourceFile, targetFile, true);