c # Перезагрузка удаленной машины, имя хоста - текстовое поле - PullRequest
1 голос
/ 16 июня 2011

Я действительно новичок в c # и думаю, у меня могут быть проблемы с моей программой.Поэтому я хочу, чтобы программа работала, она имеет 1 кнопку для перезагрузки удаленного компьютера и текстовое поле для ввода имени компьютера (среда windows xp sp3).Это код, который у меня есть, и это не перезагрузка машины.я не хочу использовать psexec, если не могу вызвать psexec из самой программы, потому что я хочу, чтобы это была динамическая программа.Короче говоря, это вызывает приглашение 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 голосов
/ 12 марта 2014

Вы можете попробовать это:

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.

0 голосов
/ 16 июня 2011

Попробуйте

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

-m - это переключатель для удаленной машины

0 голосов
/ 11 марта 2013

Я не знаю, какие у вас проблемы, ребята, но, вероятно, это "отказ в доступе", вы можете получить доступ, если попытаетесь получить доступ к c $ на удаленной машине, и они выполняют процедуру, которую вы делаете:

net use \\computername\c$ password /USER:administrator
0 голосов
/ 16 июня 2011

Разве это не должно быть?

"завершение работы", "/ r / f / m \\" + имя хоста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...