1

我对 c# 真的很陌生,我想我的程序可能有问题。所以我想让程序运行,它有 1 个重启远程机器的按钮,以及一个输入机器名称的文本框(windows xp sp3 环境)。这是我拥有的代码,它不会重新启动机器。我不想使用 psexec,除非我可以从程序本身调用 psexec b/ci 希望这是一个动态程序。长话短说,它提出了 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

4 回答 4

1

不应该吗?

"关机", "/r /f /m \\" + 主机名

于 2011-06-16T13:53:41.387 回答
0

尝试

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

-m 是远程机器的开关

于 2011-06-16T13:55:34.817 回答
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 窗口。

于 2014-03-12T08:46:26.703 回答
0

我不知道你们遇到了什么问题,但可能是“访问被拒绝”,如果您尝试在远程机器上访问 c$,您可以获得访问权限,并且他们会执行您正在执行的过程:

net use \\computername\c$ password /USER:administrator
于 2013-03-11T15:54:13.970 回答