我对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);
}
}
}
答案 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窗口。