a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

C#實現關機重啟及注銷實例代碼

2020-01-24 02:38:09
字體:
來源:轉載
供稿:網友

本文所述的C#實例代碼是一個基于Visual C#2010編寫的關機、重啟、注銷程序,類似的C#程序網上還有不少,每個人的寫法都各有不同,這段程序供新手參考下。本代碼中還用到了一個計時器,用來顯示系統運行的時間,以下為完整實例代碼:

using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.Runtime.InteropServices;using System.Threading;namespace shutdowncodes{ public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button2; private System.Windows.Forms.Button button3; private System.ComponentModel.IContainer components; [StructLayout(LayoutKind.Sequential, Pack=1)] public struct TokPriv1Luid {  public int Count;  public long Luid;  public int Attr; } [DllImport("kernel32.dll", ExactSpelling=true)]  // GetCurrentProcess函數返回當前進程的一個句柄 public static extern IntPtr GetCurrentProcess(); [DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true)]  // OpenProcessToken函數打開一個進程的訪問代號 public static extern bool OpenProcessToken(IntPtr ProcessHandles, int DesiredAccess, ref IntPtr TokenHandle); [DllImport("advapi32.dll", SetLastError=true)]  // LookupPrivilegeValue函數獲得本地唯一的標示符(LUID),用于在特定的系統中  // 表示特定的優先權。 public static extern bool LookupPrivilegeValue(string lpSystemName, string lpName, ref long lpLuid); // AdjustTokenPrivileges函數允許或者禁用指定訪問記號的優先權。 // 允許或者禁用優先權需要TOKEN_ADJUST_PRIVILEGES訪問權限。 [DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true)] public static extern bool AdjustTokenPrivileges(IntPtr TokenHandle, bool DisableAllPrivileges, ref TokPriv1Luid NewState, int BufferLength, IntPtr PreviousState,IntPtr ReturnLength); // ExitWindowsEx函數可以注銷,關機或者重新啟動系統 [DllImport("user32.dll", ExactSpelling=true, SetLastError=true)] public static extern bool ExitWindowsEx(int flg, int rea); private System.Threading.Timer timer; private const int SE_PRIVILEGE_ENABLED = 0x00000002; private const int TOKEN_QUERY = 0x00000008; private const int TOKEN_ADJUST_PRIVILEGES = 0x00000020; private const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege"; private const int EWX_LOGOFF = 0x00000000;   // 注銷 private const int EWX_SHUTDOWN = 0x00000001;  // 關機 private const int EWX_REBOOT = 0x00000002;   // 重啟 private const int EWX_FORCE = 0x00000004; private static void RebootCommand(int flg) {  bool ok;  TokPriv1Luid tp;  IntPtr hproc = GetCurrentProcess(); // 得到當前的進程  IntPtr htok = IntPtr.Zero;  ok = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok);  tp.Count = 1;  tp.Luid = 0;  tp.Attr = SE_PRIVILEGE_ENABLED;  ok = LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tp.Luid);  ok = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);  ok = ExitWindowsEx(flg, 0); } public Form1() {  InitializeComponent(); } protected override void Dispose( bool disposing ) {  if( disposing )  {  if (components != null)  {   components.Dispose();  }  }  base.Dispose( disposing ); } #region Windows 窗體設計器生成的代碼 private void InitializeComponent() {  this.groupBox1 = new System.Windows.Forms.GroupBox();  this.textBox1 = new System.Windows.Forms.TextBox();  this.button1 = new System.Windows.Forms.Button();  this.button2 = new System.Windows.Forms.Button();  this.button3 = new System.Windows.Forms.Button();  this.groupBox1.SuspendLayout();  this.SuspendLayout();  //  // groupBox1  //  this.groupBox1.Controls.Add(this.textBox1);  this.groupBox1.Location = new System.Drawing.Point(48, 24);  this.groupBox1.Name = "groupBox1";  this.groupBox1.Size = new System.Drawing.Size(192, 56);  this.groupBox1.TabIndex = 0;  this.groupBox1.TabStop = false;  this.groupBox1.Text = "系統已運行時間";  //  // textBox1  //  this.textBox1.Location = new System.Drawing.Point(24, 24);  this.textBox1.Name = "textBox1";  this.textBox1.ReadOnly = true;  this.textBox1.Size = new System.Drawing.Size(152, 21);  this.textBox1.TabIndex = 1;  this.textBox1.Text = "";  //  // button1  //  this.button1.Location = new System.Drawing.Point(16, 112);  this.button1.Name = "button1";  this.button1.Size = new System.Drawing.Size(64, 32);  this.button1.TabIndex = 1;  this.button1.Text = "關閉系統";  this.button1.Click += new System.EventHandler(this.button1_Click);  //  // button2  //  this.button2.Location = new System.Drawing.Point(112, 112);  this.button2.Name = "button2";  this.button2.Size = new System.Drawing.Size(64, 32);  this.button2.TabIndex = 2;  this.button2.Text = "注銷系統";  this.button2.Click += new System.EventHandler(this.button2_Click);  //  // button3  //  this.button3.Location = new System.Drawing.Point(208, 112);  this.button3.Name = "button3";  this.button3.Size = new System.Drawing.Size(64, 32);  this.button3.TabIndex = 3;  this.button3.Text = "重啟系統";  this.button3.Click += new System.EventHandler(this.button3_Click);  //  // Form1  //  this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);  this.ClientSize = new System.Drawing.Size(296, 173);  this.Controls.Add(this.button3);  this.Controls.Add(this.button2);  this.Controls.Add(this.button1);  this.Controls.Add(this.groupBox1);  this.Name = "Form1";  this.Text = "簡單的關機程序";  this.Load += new System.EventHandler(this.Form1_Load);  this.groupBox1.ResumeLayout(false);  this.ResumeLayout(false); } #endregion /// <summary> /// 應用程序的主入口點。 /// </summary> [STAThread] static void Main() {  Application.Run(new Form1()); } private void button1_Click(object sender, System.EventArgs e) {  RebootCommand(EWX_SHUTDOWN + EWX_FORCE); } private void button2_Click(object sender, System.EventArgs e) {  RebootCommand(EWX_LOGOFF + EWX_FORCE); } private void button3_Click(object sender, System.EventArgs e) {  RebootCommand(EWX_REBOOT + EWX_FORCE); } private void Form1_Load(object sender, System.EventArgs e) {  textBox1.Text = (Environment.TickCount / (1000 * 60)).ToString() + "分鐘";  // 每1秒鐘更新一次TextBox上顯示的系統運行時間  timer = new System.Threading.Timer(new TimerCallback(OnTimer), null, 0, 1000); } // 獲得系統已運行的時間 private void OnTimer(object state) {  textBox1.Text = (Environment.TickCount / (1000 * 60)).ToString() + "分鐘";  textBox1.Refresh(); } }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久国产黄色片 | 黄网站在线播放 | 成人免费福利视频 | 国产精品久久久久久久久久免费 | 午夜欧美一区二区三区在线播放 | 久久黄色网 | 亚洲高清一区二区三区 | 网站黄免费| 亚洲在线免费观看 | 亚洲高清在线 | 青青草国产成人av片免费 | 欧美一区二区久久久 | 亚洲aⅴ天堂av在线电影软件 | 国产偷国产偷精品高清尤物 | 国产99久久精品一区二区永久免费 | 日韩精品亚洲专区在线观看 | 日本黄色精品 | 国产一区二区三区在线 | 一区二区久久 | 国产精品一级在线观看 | 天堂影院一区二区 | 国产精品亚洲精品久久 | 宅宅久久| 欧美精品99 | 国产乱码精品一区二区三区五月婷 | 国产不卡精品 | 国产精品久久久久久久久久久久冷 | 亚洲欧美一区二区三区在线 | 天天干网 | 国产视频一二区 | 国产一区二区三区网站 | 国内久久 | 精品成人佐山爱一区二区 | 在线播放一区二区三区 | 日韩欧美视频 | www.91在线 | 夜夜操com | 国产不卡一 | av电影中文字幕在线观看 | 国产91精品一区二区绿帽 | 久草在线看片 |