8

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

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

许多客户站点将驱动器号用于网络共享,我不能总是控制它并强制他们指定 UNC 路径。我需要能够使用来自 Windows 服务的驱动器号访问网络共享。

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

4

3 回答 3

10

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

于 2010-06-23T02:50:35.857 回答
4

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

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

于 2010-06-23T02:22:25.540 回答
0

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

并且预计工作会按照我的步骤进行

                    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,您访问临时文件夹中的文件,他可以访问并且工作完美

临时文件夹访问“c:\windows\temp,因为进程只能获取 Windows 临时文件夹

希望你elan他工作完美

谢谢并恭祝安康

jagadeesh Govindaraj Pillai jagadeesh1492@facebook.com

于 2013-08-05T16:02:08.423 回答