psexec和process.start,waitforexit

时间:2013-02-05 16:58:30

标签: .net vb.net psexec

任务:使用管理员帐户将文件从远程PC复制到远程PC

代码:

    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 / user AdminUser \ SourceMachine cmd / c Copy \ sourcepc \ file1 \ destpc \ folder

所以当执行命令时,它会提示输入管理员密码,一旦验证,它就会复制文件并结束

这很好用

我想检查实际复制工作何时完成(文件大小未知,因此有时需要3/4小时)

我保持cmd窗口打开以查看进程是否结束,它将返回任务已完成或在命令提示符下失败的消息

如何在流程结束时检查VB?

2 个答案:

答案 0 :(得分:2)

在控制台应用程序上,您可以设置Process Exit代码并在父调用进程上检查相同的内容,并根据退出代码确定它是否成功

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;

答案 1 :(得分:-1)

你尝试过这样的事吗?

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

过程完成后,您应该能够捕获StandardOutput。这应该会给你成功/失败。然后是关于你想如何在你的VB应用程序中启动流程完成事件的过程。