【问题标题】:dos cmd \cmd prompt vb.net 2010dos cmd \cmd 提示 vb.net 2010
【发布时间】:2012-12-26 16:10:31
【问题描述】:

我使用此示例从 vb.net 2010 中打开命令提示符

lnk to stackoverflow document

命令提示符按预期打开,我可以毫无问题地执行目录打开命令,如 regedit 等

但我真正想要的是 tftp.exe,当我查找它时它不会显示,在执行 dir 时,在命令提示符下键入 tftp 时它没有列出我得到识别命令

当通过在运行行键入 cmd 与普通命令提示符进行比较时,我可以在 windows\system32 文件夹中看到它

另外,当我从普通命令提示符执行 dir 并与 vb.net 打开的 cmd 提示符中的 dir 进行比较时,在接近 3000 个文件中存在 400+ 个文件差异

试图找出为什么我在这里看不到所有文件是我使用的实际代码

Private Sub Button30_Click(sender As System.Object, e As System.EventArgs) Handles Button30.Click
        Dim command As String = "tftp -i 192.168.10.177 put test1.bin"
        Dim arguments As String = ""
        Dim permanent As Boolean = True
        Dim p As Process = New Process()
        Dim pi As ProcessStartInfo = New ProcessStartInfo()
        pi.Arguments = " " + If(permanent = True, "/K", "/C") + " " + command + " " + arguments
        pi.FileName = "cmd.exe"
        p.StartInfo = pi
        p.Start()
    End Sub

【问题讨论】:

  • 你到底想用这个来完成什么。为什么不直接让你的代码调用 tftp.exe?
  • 如果你查看它调用 tftp -i 192.168.10.177 put test1.bin 的代码,我是,它没有看到它我得到命令未找到所以我尝试手动执行它也找不到。除非有另一种方式我应该尝试调用它。
  • 不需要使用cmd.exe,直接运行tftp命令即可。您的方法非常复杂且不必要。
  • 我更进一步或学习代码以将 oprocess 调暗为进程,下一行 oprocess.start("notepad.exe") 和记事本打开,但如果我将 notepad.exe 更改为 tftp。 exe 我得到一个找不到文件的错误。并且两个文件都在同一个目录中

标签: vb.net


【解决方案1】:

这似乎是您正在采用的一个非常令人费解的方法,但要直接回答您的问题,您可能需要像这样设置工作目录:

pi.WorkingDirectory = "c:\windows\system32"

但我不得不说,您可能需要重新考虑打开 DOS 窗口让用户键入命令的整个方法。看起来不是很用户友好。

【讨论】:

  • 如果我将第 2 行的命令更改为它运行的目录中的其他内容(即 xcopy),我不希望该框在工作时保持打开状态。再次只打开 cmd 提示符,直到我找到为什么它看不到 tftp.exe 文件
  • 我尝试添加工作目录相同的结果。奇怪的是,如果我执行 dir tftp*.* 什么都找不到,但是如果我从正常的 cmd 提示符执行 dir tftp*.* 它就在那里
  • 我更进一步或学习代码以将 oprocess 调暗为进程,下一行 oprocess.start("notepad.exe") 和记事本打开,但如果我将 notepad.exe 更改为 tftp。 exe 我得到一个找不到文件的错误。并且两个文件都在同一个目录中
【解决方案2】:

ok 找到了答案,这是因为我正在运行 64 位 Windows,当它寻找 tftp.exe 时,它​​实际上是在 syswow64 目录中寻找,而 tftp.exe 不在该目录中。

因为我已经为 x86 而不是 64 位运行和编译了这个,所以这里是解决方法

Public Declare Function Wow64DisableWow64FsRedirection Lib "kernel32" (ByRef oldvalue As Long) As Boolean

然后

Wow64DisableWow64FsRedirection(0)

将 tthis 添加到我的代码后,tftp 上传工作完美

【讨论】:

    猜你喜欢
    • 2012-05-02
    • 1970-01-01
    • 2015-03-20
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 2017-03-01
    相关资源
    最近更新 更多