【问题标题】:psexec and process.start, waitforexitpsexec 和 process.start,waitforexit
【发布时间】:2013-02-05 16:58:29
【问题描述】:

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

代码:

    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 进行检查?

【问题讨论】:

    标签: .net vb.net psexec


    【解决方案1】:

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

    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;
    

    【讨论】:

    • 感谢快速回复,它可以工作,但我仍然必须继续检查命令提示符,并且只有在我关闭 cmd 时才会触发 Proc.ExitCode
    • 或者我如何捕获结果,即。已复制 1 个文件。 cmd 在 xyzpc 上退出,错误代码为 0
    • 我完全不明白... p.WaitForExit();应该等待 cmd 退出或关闭它。
    • 您可以更改cmd应用程序上的代码??如果是这样,您有很多方法可以做到这一点。您可以使用任何 IPC(进程间通信)
    • Sumeet,这就是它的作用......,当我运行它时,它会打开命令提示符并等待我输入管理员密码(psexec -h /user AdminUser),一旦我提供即,它启动复制命令并返回复制命令结果。即- 文件复制后跟 psexec 结果。所以我的问题是如何检查复制命令或 psexec 命令是否结束。如果我使用 StandardOutput ,则不会出现提示,并且我不想使用 psexec -p 以纯文本形式提供密码
    【解决方案2】:

    你尝试过这样的事情吗?

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

    该过程完成后,您应该能够捕获StandardOutput。那应该给你成功/失败。然后是关于您希望如何在启动进程的 VB 应用程序中处理进程完成事件的全部内容。

    【讨论】:

    • 在回答问题时,我们通常期望的不仅仅是链接。似乎该线程中包含的任何代码都不会导致作者想要解决的任务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 2014-01-22
    相关资源
    最近更新 更多