VB プログラムから cmd.exe でシャドウ コマンドを実行しようとしていますが、何らかの理由でコマンドを実行できません。コマンドをバッチ ファイルに保存し、正常に実行できましたが、引数/コマンドをコマンド プロンプトに直接渡して、この方法で実行することをお勧めします。基本的に、セッションIDとサーバー名を抽出するために作成した別のプログラムをユーザーに実行させます(その後、サーバー番号を最後から削除します)。彼らは最後に 4 桁のパスコードを取得します。最初の 2 つはセッション ID で、最後の 2 つはサーバー番号です (すべてのサーバーには smdts-(数字) という名前が付けられているため、サーバーの番号が気になります) 4 桁のコードを取得し、シャドウ管理プログラムにプラグインします。これが私の現在のコードです仕事:
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