zoukankan      html  css  js  c++  java
  • C#在网页中关闭重启服务

    在Default.aspx中加一控件Button1
    将Default.aspx.cs代码替换为以下代码

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    
    using System.Runtime.InteropServices;
    
    public partial class _Default : 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 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)
        {
            // 在此处放置用户代码以初始化页面
        }
        #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);
    
            Shutdown();//关机
    
           // Reboot();//重启
    
          // Logoff();//注销
    
        }
       
    }
  • 相关阅读:
    第12课 计算器核心解析算法(上)
    第11课 Qt中的字符串类
    第10课 初探 Qt 中的消息处理
    第9课 计算器界面代码重构
    第8课 启航!第一个应用实例
    第7课 Qt中的坐标系统
    第6课 窗口部件及窗口类型
    第5课 Qt Creator工程介绍
    第4课 Hello QT
    给Linux内核增加一个系统调用的方法(转)
  • 原文地址:https://www.cnblogs.com/yangbin1005/p/1419826.html
Copyright © 2011-2022 走看看