2013-02-05 37 views
0

任務:使用管理員帳戶從遠程PC到遠程PC複製文件PSEXEC和的Process.Start,waitforexit

代碼:

psi.FileName = "cmd.exe" 
    psi.Arguments = ParaStr 
    psi.UserName = StrUserID 
    psi.Password = ConvertToSecureString(txtAdminPassword.Text) 
    psi.Domain = StrDomain 
    psi.WindowStyle = ProcessWindowStyle.Normal 
    psi.UseShellExecute = False 
    Dim proc As New Process 
    proc.StartInfo = psi 
    proc.Start() 

ParaStr =/K psexec.exe -h /用戶ADMINUSER \ SourceMachine CMD/C複製\ sourcepc \文件1 \ destpc \文件夾

所以在執行命令時,它會提示輸入管理員密碼,一經查實,它複製文件並結束

這是實效F INE

我要檢查在實際拷貝工作就完成了(文件大小是未知的,所以有時它需要更多的則3/4小時)

我一直打開cmd窗口,看看這個過程是它會返回任務已完成或在命令提示符下失敗的消息

如何通過VB檢查進程何時結束?

回答

2

在控制檯應用程序,您可以設置進程退出代碼,並檢查相同的父調用過程,並根據退出代碼,你可以決定它是不是

you can return it from Main if you declare your Main method to return an int, or call Environment.Exit(code) 

成功要檢查退出代碼

p.StartInfo = new ProcessStartInfo("RegSvr32"); 
     p.Start(); 

     p.WaitForExit(); 

     return p.ExitCode; 
+0

thanx爲快速回復,它的工作原理,但仍然必須繼續檢查命令提示符和Proc.ExitCode只會觸發如果我關閉cmd – sambalp

+0

或如何捕獲結果即。 複製1個文件。 cmd在xyzpc上退出,錯誤代碼爲0 – sambalp

+0

我完全不理解,完全... p.WaitForExit();應等待cmd退出或關閉它。 –

-1

你有沒有嘗試過這樣的事情?

http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvb/thread/6dca867b-0881-4ff9-b336-d03761df0377

你應該能夠捕捉到StandardOutput一旦這個過程完成。這應該會讓你成功/失敗。然後是關於如何處理啓動流程的VB應用程序中的進程完成事件。

+0

我們通常會在回答問題時期望更多而僅僅是一個鏈接。看起來,該線程中包含的任何代碼都不會導致作者想要解決的任務。 –