c#如何让计算机一开机器就运行自己的程序?请用代码表示出来.还有个问题,如何在.NET里面写关机程序?急用.

解决方案 »

  1.   

    几个方法:
    1.注册表中写到以下其中之一的一个键:
    HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\userinit 或
    HKLM\Software\Microsogt\Windows NT\CurrentVersion\Winlogon\Shell  或
    HKLM\Software\Microsogt\Windows\CurrentVersion\Run  或
    HKLM\Software\Microsogt\Windows\CurrentVersion\RunOnce  或
    HKLM\Software\Microsogt\Windows\CurrentVersion\RunOnceEx  或
    HKLM\Software\Microsogt\Windows\CurrentVersion\Runservices  或
    HKLM\Software\Microsogt\Windows\CurrentVersion\RunservicesOnce2.看MSDN
    “For example, the Win32_OperatingSystem class Shutdown method requires you to set the SeShutdownPrivilege privilege. For more information, see Executing Privileged Operations.Call the method and examine the return value to determine if the method was successful. 
    The following example uses the Shutdown method to shut down a computer.Set OpSysSet = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}" & _
                             "//./root/cimv2").ExecQuery("SELECT * FROM " & _
                             "Win32_OperatingSystem WHERE Primary = true")ianswer = MsgBox("Shut Down Windows? -Warning- Save data first!", _
                      vbQuestion + vbOKCancel, _
                     "Shut Down")If ianswer = vbOK Then 'If OK, shut down   For Each OpSys In OpSysSet
          outParam =  OpSys.Shutdown      If err.number <> 0 Then
             WScript.echo  "Error number: " & Err.Number & _  
                            vbNewLine & _
                           "Description: " & Err.Description
          End If   Next Else                   ' user selected cancel
       WScript.echo  "Operation canceled"End If”
      

  2.   

    Q1:
    如果是UNIX或者LINUX的OS,得写到XCONFIG配置文件中.如果是WINDOWS的OS,有三种方法:
    1.把程序加入开始菜单的启动组
    2.写进注册表的Run键
    3.做成Windows服务
    个人觉得2/3方法都挺好的.
    Q2:
    关机程序可以调用CMD然后利用其中的SHUTDOWN命令来实现.
      

  3.   


    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Management;namespace RestComputer
    {
    /// <summary>
    /// Form1 的摘要说明。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
    private System.Windows.Forms.TextBox ip;
    private System.Windows.Forms.Button button1;
    private System.Windows.Forms.Label label1;
    private System.Windows.Forms.Label label2;
    private System.Windows.Forms.TextBox pwd;
    private System.Windows.Forms.Button button2;
    /// <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.ip = new System.Windows.Forms.TextBox();
    this.pwd = new System.Windows.Forms.TextBox();
    this.button1 = new System.Windows.Forms.Button();
    this.label1 = new System.Windows.Forms.Label();
    this.label2 = new System.Windows.Forms.Label();
    this.button2 = new System.Windows.Forms.Button();
    this.SuspendLayout();
    // 
    // ip
    // 
    this.ip.Location = new System.Drawing.Point(96, 8);
    this.ip.Multiline = true;
    this.ip.Name = "ip";
    this.ip.Size = new System.Drawing.Size(160, 32);
    this.ip.TabIndex = 0;
    this.ip.Text = "";
    // 
    // pwd
    // 
    this.pwd.Location = new System.Drawing.Point(96, 56);
    this.pwd.Multiline = true;
    this.pwd.Name = "pwd";
    this.pwd.Size = new System.Drawing.Size(160, 32);
    this.pwd.TabIndex = 1;
    this.pwd.Text = "";
    // 
    // button1
    // 
    this.button1.Location = new System.Drawing.Point(8, 104);
    this.button1.Name = "button1";
    this.button1.Size = new System.Drawing.Size(100, 32);
    this.button1.TabIndex = 2;
    this.button1.Text = "重起";
    this.button1.Click += new System.EventHandler(this.button1_Click);
    // 
    // label1
    // 
    this.label1.Location = new System.Drawing.Point(8, 16);
    this.label1.Name = "label1";
    this.label1.Size = new System.Drawing.Size(88, 24);
    this.label1.TabIndex = 3;
    this.label1.Text = "输入IP地址:";
    // 
    // label2
    // 
    this.label2.Location = new System.Drawing.Point(8, 56);
    this.label2.Name = "label2";
    this.label2.Size = new System.Drawing.Size(72, 23);
    this.label2.TabIndex = 4;
    this.label2.Text = "输入密码:";
    // 
    // button2
    // 
    this.button2.Location = new System.Drawing.Point(152, 104);
    this.button2.Name = "button2";
    this.button2.Size = new System.Drawing.Size(100, 32);
    this.button2.TabIndex = 5;
    this.button2.Text = "关机";
    this.button2.Click += new System.EventHandler(this.button2_Click);
    // 
    // Form1
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(272, 149);
    this.Controls.AddRange(new System.Windows.Forms.Control[] {
      this.button2,
      this.label2,
      this.label1,
      this.button1,
      this.pwd,
      this.ip});
    this.Cursor = System.Windows.Forms.Cursors.Hand;
    this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
    this.HelpButton = true;
    this.MaximizeBox = false;
    this.Name = "Form1";
    this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
    this.Text = "RestartComputer";
    this.ResumeLayout(false); }
    #endregion /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Application.Run(new Form1());
    } private void button1_Click(object sender, System.EventArgs e)
    {
    try
    {
    ConnectionOptions Co=new ConnectionOptions();
    Co.Username = "Administrator";
    Co.Password = pwd.Text; System.Management.ManagementScope ms= new System.Management.ManagementScope("\\\\"+ip.Text+"\\root\\cimv2",Co);
    System.Management.ObjectQuery oq = new System.Management.ObjectQuery("select * from  Win32_OperatingSystem");
    ManagementObjectSearcher q=new ManagementObjectSearcher(ms,oq);
    ManagementObjectCollection p= q.Get();
    foreach(ManagementObject  mo in p)
    {

    ip.Text = "正在重起................";
    string[] ss = {""};
    mo.InvokeMethod("Reboot",ss);
    //mo.InvokeMethod("ShutDown",ss);
    Console.WriteLine(mo.ToString());
    }
    ip.Text = "重起完成........................";
    }
    catch(System.Exception Err)
    {
    ip.Text = "密码不对";
    }
    } private void button2_Click(object sender, System.EventArgs e)
    {
    try
    {
    ConnectionOptions Co=new ConnectionOptions();
    Co.Username = "Administrator";
    Co.Password = pwd.Text; System.Management.ManagementScope ms= new System.Management.ManagementScope("\\\\"+ip.Text+"\\root\\cimv2",Co);
    System.Management.ObjectQuery oq = new System.Management.ObjectQuery("select * from  Win32_OperatingSystem");
    ManagementObjectSearcher q=new ManagementObjectSearcher(ms,oq);
    ManagementObjectCollection p= q.Get();
    foreach(ManagementObject  mo in p)
    {
    ip.Text = "正在关机................";
    string[] ss = {""};
    //mo.InvokeMethod("Reboot",ss);
    mo.InvokeMethod("ShutDown",ss);
    Console.WriteLine(mo.ToString());
    }
    ip.Text = "关机完成................";
    }
    catch(System.Exception Err)
    {
    ip.Text = Err.Message;
    }

    }
    }
    }
      

  4.   

    如果不需要考虑界面,就做成windows服务,如果是应用程序,修改注册表,
    如果成功可以在运行中使用msconfig查看。
      

  5.   

    找不到Management.dll东西.是ManagementInstaller吗?
      

  6.   

    就下面这几个代码
    using Microsoft.Win32;在程序运行的时候string strKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Run";
    string strFilePath = Application.ExecutablePath ;

    RegistryKey regKey = Registry.LocalMachine.OpenSubKey(strKey , true);
    if(regKey != null)
    {
    regKey.SetValue("cti",strFilePath);
    }今后就自动运行了
      

  7.   

    你需要添加该引用:Management.dll;右键点击项目,添加引用,然后选择".net",最后在里面选择
    "System.Management.dll"动态库即可;
      

  8.   

    xiahouwen(活靶子.NET) ,你上面说的那样写后,如何要卸载再如何办啊?文件到事可以删除,但是注册表里面的东西不能自动删除啊,不要要出错?
      

  9.   

    还有如何在2003下面关机啊?调用API只能在2000下面关机,在2003下面就只能注销了。