正在开发的项目中有这样的需求,就是web服务器上通过web程序去操作另一台机器上的文件,进行加工并返回值。开始的时候直接用绝对路径进行访问老是访 问不到,一直认为是权限的问题(其实感觉的确是权限的原因),然后把目标文件夹的权限全部放开进行访问,但是还是不可以。根本就访问不到目标路径,所以也 根本不可能操作目标路径下的文件。后来在msdn上找到这段代码,在程序中和目标服务器建立了一个连接,果然好用了。但是按照程序中直接进行net连接却 不好用。不知道为什么?特此也贴出代码来和大家讨论一下:
1
public static bool Ping(string remoteHost)
2
{
3
bool Flag = false;
4
Process proc = new Process();
5
try
6
{
7
proc.StartInfo.FileName = "cmd.exe";
8
proc.StartInfo.UseShellExecute = false;
9
proc.StartInfo.RedirectStandardInput = true;
10
proc.StartInfo.RedirectStandardOutput = true;
11
proc.StartInfo.RedirectStandardError = true;
12
proc.StartInfo.CreateNoWindow = true;
13
proc.Start();
14
string dosLine = @"ping -n 1 " + remoteHost;
15
proc.StandardInput.WriteLine(dosLine);
16
proc.StandardInput.WriteLine("exit");
17
while (proc.HasExited == false)
18
{
19
proc.WaitForExit(500);
20
}
21
string pingResult = proc.StandardOutput.ReadToEnd();
22
if (pingResult.IndexOf("(0% loss)") != -1)
23
{
24
Flag = true;
25
}
26
proc.StandardOutput.Close();
27
}
28
catch (Exception ex)
29
{
30
//eat it
31
}
32
finally
33
{
34
try
35
{
36
proc.Close();
37
proc.Dispose();
38
}
39
catch
40
{
41
}
42
}
43
return Flag;
44
}
45
public static bool Connect(string remoteHost, string userName, string passWord)
46
{
47
if (!Ping(remoteHost))
48
{
49
return false;
50
}
51
bool Flag = true;
52
Process proc = new Process();
53
try
54
{
55
proc.StartInfo.FileName = "cmd.exe";
56
proc.StartInfo.UseShellExecute = false;
57
proc.StartInfo.RedirectStandardInput = true;
58
proc.StartInfo.RedirectStandardOutput = true;
59
proc.StartInfo.RedirectStandardError = true;
60
proc.StartInfo.CreateNoWindow = true;
61
proc.Start();
62
string dosLine = @"net use \\" + remoteHost + " " + passWord + " " + " /user:" + userName + ">NUL";
63
proc.StandardInput.WriteLine(dosLine);
64
proc.StandardInput.WriteLine("exit");
65
while (proc.HasExited == false)
66
{
67
proc.WaitForExit(1000);
68
}
69
string errormsg = proc.StandardError.ReadToEnd();
70
if (errormsg != "")
71
{
72
Flag = false;
73
}
74
proc.StandardError.Close();
75
}
76
catch (Exception ex)
77
{
78
Flag = false;
79
}
80
finally
81
{
82
try
83
{
84
proc.Close();
85
proc.Dispose();
86
}
87
catch
88
{
89
}
90
}
91
return Flag;
92
}
public static bool Ping(string remoteHost)2
{3
bool Flag = false;4
Process proc = new Process();5
try6
{7
proc.StartInfo.FileName = "cmd.exe";8
proc.StartInfo.UseShellExecute = false;9
proc.StartInfo.RedirectStandardInput = true;10
proc.StartInfo.RedirectStandardOutput = true;11
proc.StartInfo.RedirectStandardError = true;12
proc.StartInfo.CreateNoWindow = true;13
proc.Start();14
string dosLine = @"ping -n 1 " + remoteHost;15
proc.StandardInput.WriteLine(dosLine);16
proc.StandardInput.WriteLine("exit");17
while (proc.HasExited == false)18
{19
proc.WaitForExit(500);20
}21
string pingResult = proc.StandardOutput.ReadToEnd();22
if (pingResult.IndexOf("(0% loss)") != -1)23
{24
Flag = true;25
}26
proc.StandardOutput.Close();27
}28
catch (Exception ex)29
{30
//eat it 31
}32
finally33
{34
try35
{36
proc.Close();37
proc.Dispose();38
}39
catch40
{41
}42
}43
return Flag;44
}45
public static bool Connect(string remoteHost, string userName, string passWord)46
{47
if (!Ping(remoteHost))48
{49
return false;50
}51
bool Flag = true;52
Process proc = new Process();53
try54
{55
proc.StartInfo.FileName = "cmd.exe";56
proc.StartInfo.UseShellExecute = false;57
proc.StartInfo.RedirectStandardInput = true;58
proc.StartInfo.RedirectStandardOutput = true;59
proc.StartInfo.RedirectStandardError = true;60
proc.StartInfo.CreateNoWindow = true;61
proc.Start();62
string dosLine = @"net use \\" + remoteHost + " " + passWord + " " + " /user:" + userName + ">NUL";63
proc.StandardInput.WriteLine(dosLine);64
proc.StandardInput.WriteLine("exit");65
while (proc.HasExited == false)66
{67
proc.WaitForExit(1000);68
}69
string errormsg = proc.StandardError.ReadToEnd();70
if (errormsg != "")71
{72
Flag = false;73
}74
proc.StandardError.Close();75
}76
catch (Exception ex)77
{78
Flag = false;79
}80
finally81
{82
try83
{84
proc.Close();85
proc.Dispose();86
}87
catch88
{89
}90
}91
return Flag;92
}


浙公网安备 33010602011771号