程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#利用網頁強制重啟服務器

C#利用網頁強制重啟服務器

編輯:關於C語言

點擊Button1,強制重啟

C#重啟服務器代碼

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Runtime.InteropServices;
namespace WebApplication1_advapi
{
  /**//// <summary>
  /// WebForm1 的摘要說明。
  /// </summary>
  public class WebForm1 : System.Web.UI.Page
  {
    protected const int SE_PRIVILEGE_ENABLED = 0x2;
    protected const int TOKEN_QUERY = 0x8;
    protected const int TOKEN_ADJUST_PRIVILEGES = 0x20;
    protected const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
    protected const int EWX_LOGOFF = 0x0;
    protected const int EWX_SHUTDOWN = 0x1;
    protected const int EWX_REBOOT = 0x2;
    protected const int EWX_FORCE = 0x4;
    protected const int EWX_POWEROFF = 0x8;
    protected System.Web.UI.WebControls.Button Button1;
    protected const int EWX_FORCEIFHUNG = 0x10;
    [StructLayout(LayoutKind.Sequential, Pack=1)]
      protected struct LuidStruct
    {
      public int Count;
      public long Luid;
      public int Attr;
    }
    [DllImport("kernel32.dll", ExactSpelling=true)]
    protected static extern IntPtr GetCurrentProcess();
    [DllImport("advapi32.dll", SetLastError=true)]
    protected static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);
    [DllImport("advapi32.dll", SetLastError=true)]
    protected static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);
    [DllImport("advapi32.dll", SetLastError=true, ExactSpelling=true)]
    protected static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref LuidStruct newst, int len, IntPtr prev, IntPtr relen);
    [DllImport("user32.dll", SetLastError=true, ExactSpelling=true)]
    protected static extern bool ExitWindowsEx(int flg, int rea);
    protected static void DoExitWindows(int flg)
    {
      LuidStruct tp;
      IntPtr hproc = GetCurrentProcess();
      IntPtr htok = IntPtr.Zero;
      OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok);
      tp.Count = 1;
      tp.Luid = 0;
      tp.Attr = SE_PRIVILEGE_ENABLED;
      LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tp.Luid);
      AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);
      ExitWindowsEx(flg, 0);
    }
    public static void Shutdown()
    {
      DoExitWindows(EWX_SHUTDOWN);
    }
    public static void Reboot()
    {
      DoExitWindows(EWX_REBOOT | EWX_FORCE);
    }
    public static void Logoff()
    {
      DoExitWindows(EWX_LOGOFF);
    }
    [DllImport("advapi32.dll", SetLastError=true, ExactSpelling=false)]
    protected static extern bool InitiateSystemShutdown(string name, string msg, int timeout, bool force, bool reboot);
    private void Page_Load(object sender, System.EventArgs e)
    {
      // 在此處放置用戶代碼以初始化頁面
    }
    Web 窗體設計器生成的代碼#region Web 窗體設計器生成的代碼
    override protected void OnInit(EventArgs e)
    {
      //
      // CODEGEN: 該調用是 ASP.Net Web 窗體設計器所必需的。
      //
      InitializeComponent();
      base.OnInit(e);
    }
    /**//// <summary>
    /// 設計器支持所需的方法 - 不要使用代碼編輯器修改
    /// 此方法的內容。
    /// </summary>
    private void InitializeComponent()
    {
      this.Button1.Click += new System.EventHandler(this.Button1_Click);
      this.Load += new System.EventHandler(this.Page_Load);
    }
    #endregion
    private void Button1_Click(object sender, System.EventArgs e)
    {
        InitiateSystemShutdown(null,null,0,true,true);
    }
  }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved