代码之家  ›  专栏  ›  技术社区  ›  Elan

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

  •  8
  • Elan  · 技术社区  · 16 年前

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

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

    3 回复  |  直到 16 年前
        1
  •  10
  •   Stephen Cleary    16 年前

    对不起的; you can't access mapped drives from Windows services . 正如Sheng所建议的,您可以使用UI进程从映射的驱动器获取UNC路径,然后将其传递给服务,服务必须使用UNC路径。

        2
  •  4
  •   Sheng Jiang 蒋晟    16 年前

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

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

        3
  •  0
  •   Jagadeesh Govindaraj    13 年前

    你希望我的工作跟我走吗

                        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);
    

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

    4,只是fso.copyfile(uncpath,tempfoler,true) 5,你访问一个临时文件夹你的文件,他是访问预期和工作完美

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

    谢谢和问候

    jagadeesh1492@facebook.com

    推荐文章