2013-02-06 204 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直接运行阴影! –

相关问题