2017-02-24 19 views
0

System.Diagnostic.Processを使用してコマンドを実行するコードがあります。しかし、同じコードを使用してnbtstatを実行しようとすると、何も返されません(例外もありません)。 hostname(例として)を実行すると、ホスト名が返されます。コマンドプロンプトから完全にうまく機能System.Diagnostic.Processを使用してnbtstatを実行できません。

string result = ""; 
      //string commandToExec = "hostname"; 
      string commandToExec = "nbtstat -A 10.10.10.5"; 
      System.Diagnostics.ProcessStartInfo procStartInfo = 
       new System.Diagnostics.ProcessStartInfo("C:\\Windows\\System32\\cmd.exe", "/c " + commandToExec); 
      procStartInfo.RedirectStandardOutput = true; 
      procStartInfo.UseShellExecute = false; 
      procStartInfo.CreateNoWindow = true; 
      System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
      proc.StartInfo = procStartInfo; 
      proc.Start(); 
      result = proc.StandardOutput.ReadToEnd(); 

このコマンド

nbtstat -A 10.10.10.5 
。私は問題を理解することができませんし、どちらも役立つネット上のリソースを見つけることはできません。誰かが正しい方向に私を導くことができる場合はどうですか?

答えて

0

nbtstat.exeプログラムを直接呼び出す必要があります。CMDを呼び出すためにCMDを呼び出す必要はありません。代わりにこの行を使用してください。

System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo(@"c:\windows\sysnative\nbtstat.exe", "-A 10.10.10.5"); 

また、Windows64bitリダイレクトのためにSysnativeも使用します。説明したようにthis post

+1

ありがとうございました...回答とその理由を指摘してください。 – anil

関連する問題