1.在訪問共享路徑的時候,如果沒有事先連接過,直接在代碼中訪問會異常,而且這個異常的時間會特別的長,我們試一下:
using System; using System.Diagnostics; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { const string path = @"\\192.168.0.10\驗證文件\驗證.txt"; var timeStart = DateTime.Now; try { Process.Start(path); } catch (Exception ex) { var time = DateTime.Now - timeStart; Console.WriteLine(ex + "\r\n總耗時:" + time.Seconds + "秒"); } Console.ReadKey(); } } }
看一下第一次執行的結果:
總耗時22秒,這顯然是不能忍受的。(第一次會比較慢,再訪問的時候會比較快。)
2.那么如何規避這種問題,快速判斷共享文件能否正常訪問呢?
我們可以通過cmd.exe下執行net use \\192.168.0.10\驗證文件 來快速判斷,代碼實現如下:
using System; using System.Diagnostics; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { const string path = @"\\192.168.0.10\驗證文件"; string message; var timeStart = DateTime.Now; using (var process = new Process { StartInfo = { FileName = "cmd.exe", UseShellExecute = false, RedirectStandardInput = true, RedirectStandardOutput = true, CreateNoWindow = true, RedirectStandardError = true } }) { process.Start(); process.StandardInput.AutoFlush = true; process.StandardInput.WriteLine(@"net use " + path); process.StandardInput.WriteLine("exit"); errorMessage = process.StandardError.ReadToEnd(); process.WaitForExit(); if (string.IsNullOrEmpty(errorMessage)) { var timespan = DateTime.Now - timeStart; Console.WriteLine(@"權限不足:" + path + "\r\n" + message + "\r\n總耗時:" + timespan.Milliseconds + "毫秒!"); } } Console.ReadKey(); } } }
再來看一下運行結果:
耗時327毫秒!
很明顯速度快多了!
當然這時候你也可以輸入用戶名密碼來建立連接:
具體cmd命令如下:
net use \\192.168.0.10\驗證文件 訪問共享的密碼 /user:訪問共享的賬號
(這里有一個前提:網絡共享的路徑必須真實有效,如果“找不到網絡路徑”,第一次使用net use命令也需要較長時間。)