c#重新启动远程机器,主机名是文本框
问题描述:
我真的很新的C#和我想我可能有我的程序问题。所以我想让程序运行,它有1个按钮来重新启动远程机器,并输入一个文本框来输入机器名称(Windows XP SP3环境)。这是我有的代码,它不重新启动机器。我不想使用psexec,除非我可以从程序本身调用psexec b/c我希望这是一个动态程序。长话短说它提出了CMD提示,但由于某种原因,该机器不重新启动(我有远程机器的权限)...任何建议将不胜感激,因为它的概率简单,我忽略了。c#重新启动远程机器,主机名是文本框
代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
namespace Tool
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btnReboot_Click(object sender, EventArgs e)
{
string hostname;
hostname = textBox1.Text;
Process.Start("shutdown", "-r -f \\\\"+ hostname);
}
}
}
答
不应该是什么?
“关断”, “/ R/F /米\\” +主机名
答
尝试
Process.Start("shutdown", "-r -f -m \\\\\"+ hostname);
-m是用于在远程机器
答
我的开关不知道你们有什么问题,但它可能是“访问被拒绝”,如果你试图在远程机器上获得c $,并且他们正在执行你正在执行的程序,你可以获得访问权限:
net use \\computername\c$ password /USER:administrator
答
你可以试试这个:
var process = new Process();
var startInfo = new ProcessStartInfo
{
FileName = "cmd.exe",
Arguments = "/c\"" + string.Format("shutdown /m \\\\{0} /f /t 00 /r", textBox1.Text) + "\""
};
process.StartInfo = startInfo;
process.Start();
,而不是执行关机直接它将启动一个提示,在提示执行命令,就像你会做手工。
您可以添加
WindowStyle = ProcesswindowStyle.Hidden
到的ProcessStartInfo初始化隐藏DOS窗口弹出。
是的,如果你需要启动关机远程计算机,它应该与/ m – 2011-06-16 13:58:24
谢谢大家的帮助,但是我已更正为Process.Start(“关机”,“/ r/f/m”+主机名) ;它仍然没有重新启动机器,还有其他想法? – ryan 2011-06-16 14:47:30