2013-01-12 39 views
0

我用這個例子,從vb.net內打開命令提示2010DOS CMD CMD提示符vb.net 2010

lnk to stackoverflow document

命令提示打開如預期,我可以做目錄,如開放命令註冊表編輯器等沒有問題

但我真正想要的是tftp.exe當我找它它不顯示,當做一個目錄它沒有列出時,在命令提示符下輸入tftp我得到承認命令

比較時通過鍵入cmd在運行行正常的命令提示符我可以看到它在windows \ system32目錄

還當我這樣做,從正常的命令提示符一個目錄,並比較從命令提示符通過vb.net有打開DIR在文件區別出來的接近到3000個文件

一個400多號試圖找出爲什麼我不能在這裏看到的所有文件是actul碼,我用

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 
+1

你究竟想用這個完成什麼?爲什麼不直接讓你的代碼直接調用tftp.exe? – JohnFx

+0

我是如果你看看它調用tftp -i 192.168.10.177把代碼放在test1.bin中的代碼,它看不到它,我得到的命令沒有找到,所以我試圖手動執行,它無法找到它。除非有另一種方式我應該試圖稱呼它。 –

+0

您不需要使用cmd.exe,只需直接運行tftp命令即可。你的方法是非常複雜和不必要的。 – JohnFx

回答

0

確定找到答案,這是因爲我正在運行64位窗口,當它查找tftp.exe時,它實際上是在syswow64目錄中查找,並且tftp.exe不在該目錄中。

,因爲我有這個運行和編譯爲x86和這裏不是64位的工作都是圍繞

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

然後

Wow64DisableWow64FsRedirection(0) 

加入t這給我的代碼TFTP上傳後的作品完美

0

這似乎是一個非常convul​​uted計算策略你正在採取,但直接回答你的問題,你可能需要像這樣設置工作目錄:

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

但是我不得不說,你可能想重新考慮打開用戶輸入命令的DOS窗口的整個方法。沒有看到非常用戶友好。

+0

我不希望盒子在其工作時保持打開狀態,如果我將第2行上的命令更改爲該目錄中的somethign,則它運行即xcopy。再次只留下cmd提示符打開,直到我找到爲什麼它沒有看到tftp.exe文件 –

+0

我試過addign工作目錄相同的結果。奇怪的是,如果我做了一個dir tftp *。*什麼都沒有找到,但是如果我從一個普通的cmd提示符下輸入dir tftp *。*,那麼它就會出現 –

+0

我拿了它1步,或者減少了代碼,和下一行oprocess.start(「notepad.exe」)和記事本打開,但如果我將notepad.exe更改爲tftp.exe,我得到一個文件未找到錯誤。並且這兩個文件都在同一個目錄中 –