它只是说" ' 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);
}
}
答案 0 :(得分:2)
我猜你有64位机器。因此,请尝试指定msg.exe
C:\Windows\Sysnative\msg.exe
的完整路径或将C:\Windows\Sysnative
添加到路径变量。
答案 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);