c#重启远程计算机,主机名是文本框

时间:2011-06-16 13:46:27

标签: c# string reboot

我对c#很新,我想我的程序可能有问题。所以我希望程序运行,它有1个按钮来重启远程机器,还有一个文本框输入机器名称(windows xp sp3环境)。这是我拥有的代码,而不是重启机器。我不想使用psexec,除非我可以从程序本身调用psexec b / c我希望这是一个动态程序。长话短说它提出cmd提示但由于某种原因机器没有重启(我有远程机器的权限)...任何建议都会非常感激,因为它的概念很简单,我忽略了。

代码:

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);
        }
    }
}

4 个答案:

答案 0 :(得分:0)

不应该吗?

  

“shutdown”,“/ r / f / m \\”+主机名

答案 1 :(得分:0)

尝试

Process.Start("shutdown", "-r -f -m \\\\\"+ hostname); 

-m是远程机器的开关

答案 2 :(得分:0)

我不知道你们有什么问题,但它可能是“访问被拒绝”,如果你试图在远程机器上获得c $,你可以获得访问权限,并且他们执行你正在做的程序:

net use \\computername\c$ password /USER:administrator

答案 3 :(得分:0)

你可以试试这个:

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窗口。