0

この例を使用して、vb.net 2010 内からコマンド プロンプトを開きました。

stackoverflow ドキュメントへのリンク

コマンドプロンプトは期待どおりに開き、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
4

2 に答える 2

1

これは非常に複雑なアプローチのようですが、質問に直接答えるには、おそらく次のように作業ディレクトリを設定する必要があります。

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

ただし、ユーザーがコマンドを入力するためにDOSウィンドウを開くというアプローチ全体を再検討する必要があるかもしれません。あまりユーザーフレンドリーではありません。

于 2013-01-12T00:53:45.890 に答える
0

答えが見つかりました.64ビットウィンドウを実行していて、tftp.exeを探しているときに、実際にはsyswow64ディレクトリを探しており、tftp.exeはそのディレクトリにありません。

私はこれを実行してx86用にコンパイルしているので、64ビットではありません。

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

それから

Wow64DisableWow64FsRedirection(0)

tthis をコードに追加した後、tftp アップロードは問題なく動作します

于 2013-01-12T20:41:35.143 に答える