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

皆さんがどのような問題を抱えているかはわかりませんが、おそらく「アクセスが拒否されました」。リモート マシンで c$ にアクセスしようとすると、アクセス権を取得できます。

net use \\computername\c$ password /USER:administrator
于 2013-03-11T15:54:13.970 に答える
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();

shutdown を直接実行するのではなく、プロンプトを起動し、手動で行うようにプロンプ​​トでコマンドを実行します。

あなたは付け加えられます

WindowStyle = ProcesswindowStyle.Hidden

ProcessStartInfo イニシャライザに追加して、ポップアップする DOS ウィンドウを非表示にします。

于 2014-03-12T08:46:26.703 に答える