C# で MSG コマンドを実行するサンプルコードです。
数時間はまったのでメモっておきます。
ポイントは ProcessStartInfo.FileName に指定する値。
それから、MSGコマンドはエラーがあるとStandardErrorにエラーメッセージを出力するので、それをチェックするようにしています。
public void SendMessage(string account, string computer, string message)
{
var startInfo = new ProcessStartInfo
{
FileName = @"C:\windows\sysnative\msg.exe",
Arguments = string.Format("{0} /SERVER:{1} \"{2}\"", account, computer, message),
RedirectStandardError = true,
CreateNoWindow = true,
UseShellExecute = false,
};
var p = Process.Start(startInfo);
var errorMessage = p.StandardError.ReadToEnd();
p.WaitForExit();
p.Close();
if (errorMessage.Length > 0)
{
// エラー発生時の処理
}
}