系统是一个web系统,用的是C#.目前在本地有一个映射(net share)盘N(\\IP\e$),在browser里面看,好像是是本地的盘一样的用的那种。那个e盘里面有一个目录a,a目录下有个a.txt文件。想通过程序读取这个a目录下的a.txt文件。如何实现?跟普通的本地文件读写有什么区别?

解决方案 »

  1.   

    居然没人回答,而且帖子这么快就沉下去了。失望ing
      

  2.   

    一般情况下是没有权限的
    你可以采用模拟参见
    http://msdn.microsoft.com/library/CHS/vsent7/html/vxconImpersonation.asp
      

  3.   

    一般情况下是没有权限的
    你可以采用模拟实现参见
    http://msdn.microsoft.com/library/CHS/vsent7/html/vxconImpersonation.asp
      

  4.   

    呀,居然是个老大级别的回答了。
    谢拉!我也是怀疑是权限问题,因为在File.Exists的MSDN中有这样一段:
    ----------------------------------------------
    如果调用方不具有读取指定文件所需的足够权限,则不引发异常并且该方法返回 false,这与 path 是否存在无关。
    ----------------------------------------------本来我们的解决方案是用FTP来下载的,代码已经做好了,在普通的机器上也已经测试通过。但不知是何原因,连接到真正的服务器时,连接所花的时间很长,连接成功后下载倒是很快。于是就想采用net share的方式。可是代码写好后,本地文件读写(设置了相关权限)没有问题。照理说,net share方式除去权限,其他读取方式应该与本地文件类同。唉~~~ 看来还得找个方法给.net读的权限。再次感谢,如果有好的方法,请给与帮助!  :)
      

  5.   

    我用过,要把你的e设置为共享,并且设置相应的权限,就可以下载了,我也是通过net 命令连接服务器的
      

  6.   

    我用的net use命令,映射有的时候会有问题public static bool Ping(string remoteHost)
    {
    bool Flag = false;
    Process proc = new Process();
    try
    {
    proc.StartInfo.FileName = "cmd.exe";
    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.RedirectStandardInput = true;
    proc.StartInfo.RedirectStandardOutput = true;
    proc.StartInfo.RedirectStandardError = true;
    proc.StartInfo.CreateNoWindow = true;
    proc.Start();
    string dosLine = @"ping -n 1 " + remoteHost;
    proc.StandardInput.WriteLine(dosLine);
    proc.StandardInput.WriteLine("exit");
    while (proc.HasExited == false)
    {
    proc.WaitForExit(500);
    }
    string pingResult = proc.StandardOutput.ReadToEnd();
    if (pingResult.IndexOf("(0% loss)") != -1)
    {
    Flag = true;
    }
    proc.StandardOutput.Close() ;
    }
    catch (Exception ex)
    {
    }
    finally
    {
    try
    {
    proc.Close();
    proc.Dispose();
    }
    catch
    {
    }
    }
    return Flag;
    }
    public static bool Connect(string remoteHost, string userName, string passWord)
    {
    if(!Ping(remoteHost))
    {
    return false;
    }
    bool Flag = true;
    Process proc = new Process();
    try
    {
    proc.StartInfo.FileName = "cmd.exe";
    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.RedirectStandardInput = true;
    proc.StartInfo.RedirectStandardOutput = true;
    proc.StartInfo.RedirectStandardError = true;
    proc.StartInfo.CreateNoWindow = true;
    proc.Start();
    string dosLine = @"net use \\" + remoteHost + " " + passWord + " " + " /user:" + userName + ">NUL";
    proc.StandardInput.WriteLine(dosLine);
    proc.StandardInput.WriteLine("exit");
    while (proc.HasExited == false)
    {
    proc.WaitForExit(1000);
    }
    string errormsg = proc.StandardError.ReadToEnd();
    if (errormsg != "")
    {
    Flag = false;
    }
    proc.StandardError.Close() ;
    }
    catch (Exception ex)
    {
    Flag = false;
    }
    finally
    {
    try
    {
    proc.Close();
    proc.Dispose();
    }
    catch
    {
    }
    }
    return Flag;
    }