ASP.NET關(guān)機(jī)代碼(Windows為本機(jī))
作者:resoar
本文列出了ASP.NET的關(guān)機(jī)代碼的關(guān)機(jī)代碼,希望對大家有所幫助。
編寫.NET關(guān)機(jī)代碼,首先導(dǎo)入這個命名空間using System.Runtime.InteropServices;
這個是關(guān)閉本機(jī)的代碼,比如說程序是放在服務(wù)器上,那么關(guān)閉的是Server,而不是客戶端。
以下.NET關(guān)機(jī)代碼針對windows
- 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 void Page_Load(object sender, EventArgs e)
- {
- DoExitWin(EWX_SHUTDOWN);
- }
- [StructLayout(LayoutKind.Sequential, Pack = 1)]
- internal struct TokPriv1Luid
- {
- public int Count;
- public long Luid;
- public int Attr;
- }
- [DllImport("kernel32.dll", ExactSpelling = true)]
- internal static extern IntPtr GetCurrentProcess();
- [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
- internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);
- [DllImport("advapi32.dll", SetLastError = true)]
- internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);
- [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
- internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall,
- ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);
- [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
- internal static extern bool ExitWindowsEx(int flg, int rea);
- internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
- internal const int TOKEN_QUERY = 0x00000008;
- internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
- internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
- internal const int EWX_LOGOFF = 0x00000000;
- internal const int EWX_SHUTDOWN = 0x00000001;
- internal const int EWX_REBOOT = 0x00000002;
- internal const int EWX_FORCE = 0x00000004;
- internal const int EWX_POWEROFF = 0x00000008;
- internal const int EWX_FORCEIFHUNG = 0x00000010;
- private static void DoExitWin(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);
- }
- }
以上就是.NET關(guān)機(jī)代碼。
【編輯推薦】
- ASP.NET DetailsView中顯示選中產(chǎn)品的詳細(xì)信息
- ASP.NET 2.0數(shù)據(jù)教程:GridView選擇行
- ASP.NET 2.0數(shù)據(jù)教程:GridView顯示數(shù)據(jù)
- ASP.NET 2.0中添加GridView到頁面
- 新增ASP.NET頁面時的注意事項
責(zé)任編輯:book05
來源:
cnblogs