2013-02-06 90 views
0

我想從我的VB程序運行cmd.exe中的shadow命令,但由於某種原因,它不會運行命令我嘗試了幾個不同的東西全部哪些沒有工作。我能夠將命令保存到批處理文件,然後成功執行它,但我更願意直接將參數/命令傳遞給命令提示符並執行此操作。基本上,我有一個用戶運行我創建的另一個程序來提取會話ID和服務器名稱(然後我只是把服務器號碼結束)。他們得到一個4位數字的密碼,其實前兩個是sessionid,後兩個是服務器號碼(我們所有的服務器都被命名爲smdts-(一個數字),所以我只關心他們的服務器號碼)然後我拿四位數的代碼並將其插入我的影子管理程序。這裏是我當前的代碼,工作:VB.NET無法在命令提示符下運行shadow命令

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim SessId As String 
    Dim PassCode As String 
    Dim ServNum As String 
    Dim Prc As Process 

    PassCode = TextBox2.Text 
    SessId = PassCode.Substring(0, 2) 
    ServNum = PassCode.Substring(PassCode.Length - 2) 
    Dim fileargs As String = " shadow" + " " & SessId + " " + "/server:smdts-" + ServNum 

    Dim Pinfo = New System.Diagnostics.ProcessStartInfo 
    Pinfo.FileName = "cmd.exe" 
    Pinfo.Arguments = fileargs 
    Pinfo.ErrorDialog = False 
    Pinfo.UseShellExecute = False 
    Pinfo.CreateNoWindow = False 
    Pinfo.WindowStyle = ProcessWindowStyle.Normal 
    Pinfo.RedirectStandardOutput = False 
    Pinfo.RedirectStandardInput = True 
    Pinfo.RedirectStandardError = False 

    Prc = New Process 
    Prc.StartInfo = Pinfo 
    Prc.Start() 

End Sub 

什麼工作(我不希望使用批處理文件):

Public Class Form1 
Public pathvar As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) 

    Dim SessId As String 
    Dim PassCode As String 
    Dim ServNum As String 

    PassCode = TextBox2.Text 
    SessId = PassCode.Substring(0, 2) 
    ServNum = PassCode.Substring(PassCode.Length - 2) 
    Dim fileargs As String = " shadow" + " " & SessId + " " + "/server:smdts-" + ServNum 

    Dim Streamwriter As StreamWriter 
    Streamwriter = File.CreateText(pathvar + "\ShadowBatch.bat") 
    Streamwriter.WriteLine(fileargs) 
    Streamwriter.Close() 
    Shell(pathvar + "\ShadowBatch.bat") 
End Sub 

爲什麼第一個例子任何幫助不工作將非常感激!謝謝!

湯姆ķ

+0

使用決明子,它可以在純粹的C#中做到這一點。 – SLaks

回答

1

你傳遞shadow ...作爲參數CMD。
CMD不支持。

相反,您需要通過/c shadow ...,它會告訴CMD執行該命令並退出。

或者,您可以直接運行shadow,而無需通過CMD。

+0

+1直接運行陰影! –