无法从Windows服务访问驱动器映射的网络共享上的文件

我有一个映射到驱动器号的网络共享文件夹,可以从Windows资源管理器,命令提示符以及我的WinForms应用程序中访问,没有问题。 它也可以使用UNC路径从我的Windows服务访问。

但是,当我尝试使用Windows服务中的映射驱动器号访问此网络位置时,访问失败。 Windows服务配置为使用我的个人“登录”帐户凭据,这在上述所有情况下都是相同的。 我是管理员。

许多客户站点使用驱动器号作为网络共享,我无法始终控制它并强制它们指定UNC路径。 我需要能够使用Windows服务中的驱动器号访问网络共享。

我需要做什么来设置我的Windows服务,以便它可以访问映射到驱动器号的网络共享文件夹? 我的Windows服务是用C#编写的。

抱歉; 您无法从Windows服务访问映射的驱动器 。 正如Sheng建议的那样,您可以使用UI进程从映射驱动器获取UNC路径,然后将其传递给必须使用UNC路径的服务。

映射的驱动器是每个会话对象。 因此,每个交互式会话都有自己的映射,服务会话具有另一个驱动器映射。 为了获得映射驱动器的正确UNC路径,您需要在正确的会话中调用WNetGetConnection。

您可以使用任何会话间通信方法来启动请求并在服务中获取结果,例如WCF,命名管道,套接字等。

您好,我在项目中遇到了同样的问题,我找到了解决方案

并且按照我的步骤预期工作

if (api.Docusign_download(strDocuSignUserName, strDocuSignPassword, strDocuSignIntegratorKey, EnvelopeID, Environment.ExpandEnvironmentVariables("%temp%")) == true) { if (m_streamWriter1 != null) { m_streamWriter1.WriteLine(" This envelop id is Downloaded and update the table" + EnvelopeID + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "\n"); } fpath1 = Environment.ExpandEnvironmentVariables("%temp%") + '\\' + EnvelopeID + '1' + ".pdf"; fpath2 = Environment.ExpandEnvironmentVariables("%temp%") + '\\' + EnvelopeID + '2' + ".pdf"; if (System.IO.File.Exists(fpath1)) { fso = new FileSystemObject(); // fso.CopyFile(fileLoc, "\\\\Tech-Pro-01\\D\\", true); i download the file in temp folder and copy file to unc path ur expected work on reverse like access file to unc path he does not work directly but work in in direct access like temp folder to services fso.CopyFile(fpath1, UNC, true); fso.CopyFile(fpath2, UNC, true); fso.DeleteFile(fpath1, true); fso.DeleteFile(fpath2, true); //System.IO.File.Move(fileLoc, fileLocMove); 

我只是在vb fso文件系统对象中使用遗留应用程序脚本

1,确保您在iuser和网络服务访问中的地图路径访问启用映射提供的机器2,添加参考系统脚本

3,和unc路径示例\ computername \ sharedname \ folder \ filename 4,只需fso.copyfile(uncpath,tempfoler,true)5,你在temp文件夹中访问你的文件,他是访问预期和完美的工作

临时文件夹访问“c:\ windows \ temp,因为只能执行windows temp文件夹

希望你能够完美地工作

感谢致敬

jagadeesh Govindaraj Pillai jagadeesh1492@facebook.com