PSEXEC和的Process.Start,waitforexit

问题描述:

任务:使用管理员帐户从远程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检查进程何时结束?

在控制台应用程序,您可以设置进程退出代码,并检查相同的父调用过程,并根据退出代码,你可以决定它是不是

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退出或关闭它。 –

你有没有尝试过这样的事情?

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

你应该能够捕捉到StandardOutput一旦这个过程完成。这应该会让你成功/失败。然后是关于如何处理启动流程的VB应用程序中的进程完成事件。

+0

我们通常会在回答问题时期望更多而仅仅是一个链接。看起来,该线程中包含的任何代码都不会导致作者想要解决的任务。 –