【问题标题】:Command not executing when invoking windows cmd from vb.net app从 vb.net 应用程序调用 windows cmd 时命令未执行
【发布时间】:2013-08-23 18:31:51
【问题描述】:

我有点 .NET 菜鸟。我一直在努力寻找一种通过 vb.net 应用程序执行命令的方法,我找到了this thread 所以我想出的是,将驱动器映射到网络上的另一台服务器;

Dim application As New ProcessStartInfo("cmd.exe")
Dim process As Process
process = process.Start(application)
Dim command As String = "net use x: \\webtest01\c$ /USER:daylight\robbery TakeItNGo" 'all fake obviously
process.StandardInput.WriteLine(command)
process.WaitForExit()
process.Close()

但是当我运行应用程序时,它会等待大约 30 秒,然后我会弹出 windows 命令控制台,并将工作目录设置为 E:\>

谁能告诉我我做错了什么,这是我第一次从 vb.net 应用程序这样做

【问题讨论】:

    标签: .net vb.net system.diagnostics


    【解决方案1】:

    您的代码需要修改

        Dim application As New ProcessStartInfo("cmd.exe") With 
                             {.RedirectStandardInput = True, .UseShellExecute = False}
        Dim process As New Process
        process = process.Start(application)
        Dim command As String = "net use x: \\webtest01\c$ /USER:daylight\robbery TakeItNGo"  _
                 & vbCrLf & "exit"
        process.StandardInput.WriteLine(command)
        process.WaitForExit()
        process.Close()
    

    要使用标准输入,您需要.RedirectStandardInput = True, .UseShellExecute = False (Process.StandardInput Property )。并且“退出”命令是结束cmd 进程所必需的。

    【讨论】:

    • 当我使用直接方法时,它不会执行转发命令,但会打开“CMD”。谢谢
    【解决方案2】:

    把你的代码改成

    Dim command As String = "/C net use x: \\webtest01\c$ /USER:daylight\robbery TakeItNGo" 
    Dim application As New ProcessStartInfo("cmd.exe", command)
    Dim process = process.Start(application)
    process.WaitForExit()
    process.Close()
    

    ProcessStartInfo 类有一个构造函数,它接受两个参数,即要启动的程序文件和要传递给该进程的参数。

    但是,对于 CMD.exe,在命令行上传递标志 /C 至关重要,否则参数将被忽略并且 cmd.exe 退出而不查看参数

    More info on CMD flags

    当然,如果您能够使用给定的凭据连接到网络资源,那么所有这些都是有效的。我会将此作为在正常打开的命令 shell 上尝试相同命令的第一步进行验证。

    【讨论】:

    • 已经检查了带有 uname 和 pwd 的命令是否有效。我的智能感知在您回复的代码中的第三行下划线,process.Start(application) 应该是 Process.Start(application) 还是应该在声明中实例化进程对象?
    猜你喜欢
    • 2016-06-17
    • 2020-06-14
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多