网络映射 与 文件读取 问题 系统是一个web系统,用的是C#.目前在本地有一个映射(net share)盘N(\\IP\e$),在browser里面看,好像是是本地的盘一样的用的那种。那个e盘里面有一个目录a,a目录下有个a.txt文件。想通过程序读取这个a目录下的a.txt文件。如何实现?跟普通的本地文件读写有什么区别? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 居然没人回答,而且帖子这么快就沉下去了。失望ing 一般情况下是没有权限的你可以采用模拟参见http://msdn.microsoft.com/library/CHS/vsent7/html/vxconImpersonation.asp 一般情况下是没有权限的你可以采用模拟实现参见http://msdn.microsoft.com/library/CHS/vsent7/html/vxconImpersonation.asp 呀,居然是个老大级别的回答了。谢拉!我也是怀疑是权限问题,因为在File.Exists的MSDN中有这样一段:----------------------------------------------如果调用方不具有读取指定文件所需的足够权限,则不引发异常并且该方法返回 false,这与 path 是否存在无关。----------------------------------------------本来我们的解决方案是用FTP来下载的,代码已经做好了,在普通的机器上也已经测试通过。但不知是何原因,连接到真正的服务器时,连接所花的时间很长,连接成功后下载倒是很快。于是就想采用net share的方式。可是代码写好后,本地文件读写(设置了相关权限)没有问题。照理说,net share方式除去权限,其他读取方式应该与本地文件类同。唉~~~ 看来还得找个方法给.net读的权限。再次感谢,如果有好的方法,请给与帮助! :) 我用过,要把你的e设置为共享,并且设置相应的权限,就可以下载了,我也是通过net 命令连接服务器的 我用的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;} 两个数组 如何合并成一个嵌套式的数组 c# winform 多线程 控件操作的问题 学C#中关于接口的问题 问个Remoting的问题 关于C#里面RichTextBox右边的那个滑条 c# 获取一个数据表的特定值然后判断 关于PDF生成问题 如何判斷在textbox中輸入的小數只能輸入一個小數點? 新手求助,一个类型转换的小问题。 DataGrid多行删除问题... 请问.net用什么开发工具? Windows Service 怎么调试
你可以采用模拟参见
http://msdn.microsoft.com/library/CHS/vsent7/html/vxconImpersonation.asp
你可以采用模拟实现参见
http://msdn.microsoft.com/library/CHS/vsent7/html/vxconImpersonation.asp
谢拉!我也是怀疑是权限问题,因为在File.Exists的MSDN中有这样一段:
----------------------------------------------
如果调用方不具有读取指定文件所需的足够权限,则不引发异常并且该方法返回 false,这与 path 是否存在无关。
----------------------------------------------本来我们的解决方案是用FTP来下载的,代码已经做好了,在普通的机器上也已经测试通过。但不知是何原因,连接到真正的服务器时,连接所花的时间很长,连接成功后下载倒是很快。于是就想采用net share的方式。可是代码写好后,本地文件读写(设置了相关权限)没有问题。照理说,net share方式除去权限,其他读取方式应该与本地文件类同。唉~~~ 看来还得找个方法给.net读的权限。再次感谢,如果有好的方法,请给与帮助! :)
{
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;
}