cmd命令msg无法正常工作

时间:2014-09-30 12:10:30

标签: c# cmd

它只是说" ' MSG'不被视为内部或外部计划...." 我经常搜索,但仍然找不到任何东西。为什么它不识别它?

    private void button1_Click(object sender, EventArgs e)
    {
        string strCmdText;       
        string user = textBox1.Text;
        string host = textBox2.Text;
        string time = textBox3.Text;
        string text = textBox4.Text;

        if (textBox1.Text == "")
        {
            System.Windows.Forms.MessageBox.Show("You haven't specified a user!");
        }
        else if(textBox2.Text == "")
        {
            System.Windows.Forms.MessageBox.Show("You haven't specified the host!");
        }
        else if (textBox3.Text == "")
        {
            System.Windows.Forms.MessageBox.Show("You haven't specified the shutdown timer");
        }
        else
        {
            strCmdText = "/c msg " + user + "/server:" + host + " /time:" + time + " /w " + text;
            System.Diagnostics.Process.Start("CMD.exe", strCmdText);
        }
    }

2 个答案:

答案 0 :(得分:2)

我猜你有64位机器。因此,请尝试指定msg.exe C:\Windows\Sysnative\msg.exe的完整路径或将C:\Windows\Sysnative添加到路径变量。

Source

答案 1 :(得分:0)

请确保“msg”命令在命令行本身(CMD.exe)中正常工作。

如果它也提供相同的错误,请确保System32文件夹中存在msg.exe,并且PATH环境变量具有System32文件夹路径。

下面的代码似乎很好,但没有用。它将“msg.exe”识别为内部或外部命令错误。

 ProcessStartInfo pi = new ProcessStartInfo();            
 pi.FileName = "cmd.exe";
 pi.Arguments = "/c msg.exe arguments";           
 pi.UseShellExecute = false;
 Process.Start(pi);
 Thread.Sleep(5000);

但是将用户信息设置为ProcessStartInfo,它可以工作,我能够访问位于System32文件夹中的exe。

ProcessStartInfo pi = new ProcessStartInfo();            
pi.FileName = "cmd.exe";
pi.Arguments = "/c msg.exe arguments";
pi.UserName = "administrator";
System.Security.SecureString s = new System.Security.SecureString();
s.AppendChar('p');
s.AppendChar('a');
s.AppendChar('s');
s.AppendChar('s');
s.AppendChar('w');
s.AppendChar('o');
s.AppendChar('r');
s.AppendChar('d');
pi.Password = s;
pi.UseShellExecute = false;
Process.Start(pi);
Thread.Sleep(5000);

请参阅https://stackoverflow.com/a/10932062/2382414