2013-02-06 3 views
0

내 VB 프로그램에서 cmd.exe의 shadow 명령을 실행하려고하지만 어떤 이유로 명령을 실행하지 않습니다. 그것은 효과가 없습니다. 배치 파일에 명령을 저장 한 다음 성공으로 실행할 수 있었지만 인수/명령을 명령 프롬프트에 직접 전달하고이 방법을 실행하는 것을 선호합니다. 기본적으로 나는 세션 ID와 서버 이름을 추출하기 위해 만든 다른 프로그램을 사용자가 실행하게한다. 그들은 기본적으로 처음 두 개의 세션 ID가 있고 마지막 두 개는 서버 번호입니다 (모든 서버는 즉 smdts- (숫자)이므로 서버 번호가 무엇인지 신경 써야합니다). 4 자리 숫자 코드를 내 그림자 관리 프로그램에 연결합니다. 여기 가하는 내 현재 코드는하지 일 :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 

왜 첫 번째 예제에 어떤 도움을 대단히 감사할만한 일이 아닙니다! 감사!

톰 K는

+0

순수한 C#에서이를 수행 할 수있는 Cassia를 사용하십시오. – SLaks

답변

1

당신은 CMD의 인수로 shadow ...를 전달하고 있습니다.
CMD는이를 지원하지 않습니다.

대신 /c shadow ...을 전달해야합니다.이 명령은 CMD에 명령을 실행하고 종료하도록 지시합니다.

또는 CMD를 거치지 않고 직접 shadow을 실행할 수 있습니다.

+0

+1 직접 그림자를 실행! –