资料可以搜以下
我觉得你说的这种有难度,远程关机之后你这头也没什么能控制的了...完全断线了嘛不是...想不通

解决方案 »

  1.   

    win2k下可以用WMI实现.这里有个控制远程重启的代码,供参考.using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Management;namespace ReStartboot
    {
    /// <summary>
    /// Form1 的摘要说明。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
    private System.Windows.Forms.Label label1;
    private System.Windows.Forms.Label label2;
    private System.Windows.Forms.Label label3;
    private System.Windows.Forms.TextBox textBox1;
    private System.Windows.Forms.TextBox textBox2;
    private System.Windows.Forms.TextBox textBox3;
    private System.Windows.Forms.Button button1;
    /// <summary>
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.Container components = null; public Form1()
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent(); //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    } /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if (components != null) 
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } #region Windows Form Designer generated code
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.label1 = new System.Windows.Forms.Label();
    this.label2 = new System.Windows.Forms.Label();
    this.label3 = new System.Windows.Forms.Label();
    this.textBox1 = new System.Windows.Forms.TextBox();
    this.textBox2 = new System.Windows.Forms.TextBox();
    this.textBox3 = new System.Windows.Forms.TextBox();
    this.button1 = new System.Windows.Forms.Button();
    this.SuspendLayout();
    // 
    // label1
    // 
    this.label1.Location = new System.Drawing.Point(24, 32);
    this.label1.Name = "label1";
    this.label1.Size = new System.Drawing.Size(120, 23);
    this.label1.TabIndex = 0;
    this.label1.Text = "远程计算机名或IP:";
    this.label1.TextAlign = System.Drawing.ContentAlignment.TopRight;
    // 
    // label2
    // 
    this.label2.Location = new System.Drawing.Point(24, 80);
    this.label2.Name = "label2";
    this.label2.Size = new System.Drawing.Size(120, 23);
    this.label2.TabIndex = 1;
    this.label2.Text = "管理员名:";
    this.label2.TextAlign = System.Drawing.ContentAlignment.TopRight;
    // 
    // label3
    // 
    this.label3.Location = new System.Drawing.Point(24, 120);
    this.label3.Name = "label3";
    this.label3.Size = new System.Drawing.Size(120, 23);
    this.label3.TabIndex = 2;
    this.label3.Text = "密码:";
    this.label3.TextAlign = System.Drawing.ContentAlignment.TopRight;
    // 
    // textBox1
    // 
    this.textBox1.Location = new System.Drawing.Point(160, 32);
    this.textBox1.Name = "textBox1";
    this.textBox1.Size = new System.Drawing.Size(144, 21);
    this.textBox1.TabIndex = 3;
    this.textBox1.Text = "192.168.1.12";
    // 
    // textBox2
    // 
    this.textBox2.Location = new System.Drawing.Point(160, 72);
    this.textBox2.Name = "textBox2";
    this.textBox2.Size = new System.Drawing.Size(144, 21);
    this.textBox2.TabIndex = 4;
    this.textBox2.Text = "Administrator";
    // 
    // textBox3
    // 
    this.textBox3.Location = new System.Drawing.Point(160, 112);
    this.textBox3.Name = "textBox3";
    this.textBox3.Size = new System.Drawing.Size(144, 21);
    this.textBox3.TabIndex = 5;
    this.textBox3.Text = "";
    // 
    // button1
    // 
    this.button1.Location = new System.Drawing.Point(136, 176);
    this.button1.Name = "button1";
    this.button1.Size = new System.Drawing.Size(96, 23);
    this.button1.TabIndex = 6;
    this.button1.Text = "重启远程计算机";
    this.button1.Click += new System.EventHandler(this.button1_Click);
    // 
    // Form1
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(344, 229);
    this.Controls.AddRange(new System.Windows.Forms.Control[] {
      this.button1,
      this.textBox3,
      this.textBox2,
      this.textBox1,
      this.label3,
      this.label2,
      this.label1});
    this.Name = "Form1";
    this.Text = "重启远程计算机";
    this.ResumeLayout(false); }
    #endregion /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Application.Run(new Form1());
    } private void button1_Click(object sender, System.EventArgs e)
    {
    //定义连接远程计算机的一些选项
    ConnectionOptions options=new ConnectionOptions();
    options.Username=textBox2.Text;
    options.Password=textBox3.Text;
    ManagementScope scope=new ManagementScope("\\\\"+textBox1.Text+"\\root\\cimv2",options);
    try
    {
    //用给定管理者用户名和口令连接远程的计算机
    scope.Connect();
    ObjectQuery oq=new ObjectQuery("select * from win32_OperatingSystem");
    ManagementObjectSearcher query1=new ManagementObjectSearcher(scope,oq);
    ManagementObjectCollection queryCollection1=query1.Get();
    foreach(ManagementObject mo in queryCollection1)
    {
    string[] ss={""};
    mo.InvokeMethod("Reboot",ss);
    }
    }
    catch(Exception er)
    {
    MessageBox.Show("连接" + textBox1.Text + "出错,出错信息为:" +er.Message);
    }
    }
    }
    }