我用using System.Runtime.InteropServices ;
using System.Text ;
[ DllImport("user32") ]
public static extern long ExitWindowsEx(long uFlags, long dwReserved ) ;
ExitWindowsEx(1, 0);
怎么没有反应
用ExitWindowsEx(0, 0);是注销
using System.Text ;
[ DllImport("user32") ]
public static extern long ExitWindowsEx(long uFlags, long dwReserved ) ;
ExitWindowsEx(1, 0);
怎么没有反应
用ExitWindowsEx(0, 0);是注销
解决方案 »
- 【诡异的false】C#菜单项的visible一直是false,强制为true也没用
- c#关于数据库更新的问题
- winform中的方法哪些是静态、哪些是非静态
- asp.net c# 如何进行串口编程(取数据)
- 尋求C#書籍(適合中小學生用的).謝謝
- top:expression(this.offsetParent.scrollTop); 不是有效top属性
- 如何把让窗口显示在最前面?
- SOCKET中Read阻塞后怎么超时?
- DataTable导出EXCEL,本地可以,发布到服务器不行
- 高分求HELP !我的一个报表里的字段值如何写进去!!!! 急着做软件向单位交差!!!谢谢谢谢!!
- 处理数据后如何再存入文本?
- 100分求一个功能齐全的datagrid例子,注意要WIN FORM,C#的哦~明天中午结帖,大家抓紧抢分~~~~~提供连接地址也可以
命令为shutdown -s
偶没试过哈
只知道C#可以跑cmd命令
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Runtime.InteropServices; using System.Security.Principal;
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)] public struct LUID { public uint LowPart; public uint HighPart; };
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)] public struct TOKEN_PRIVILEGES { public uint PrivilegeCount; public LUID Luid; public uint Attributes; };
public class PlatformImport { [DllImport("advapi32", CharSet=CharSet.Auto)] public static extern bool LookupPrivilegevalue (string sysname,string privname,ref LUID luid);
[DllImport("advapi32", CharSet=CharSet.Auto)] public static extern bool AdjustTokenPrivileges(IntPtr handle, bool dsall,ref TOKEN_PRIVILEGES newstate,int len, IntPtr oldstate,IntPtr retlen);
[DllImport("kernel32.dll")] public static extern int GetLastError(); [DllImport("user32.dll")] public static extern bool ExitWindowsEx(int uFlags, int dwReason); }
public class Form1 : Form { private Button button1;
public Form1() {
this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout();
this.button1.Location = new Point(136, 112); this.button1.Name = "button1"; this.button1.Size = new Size(80, 24); this.button1.TabIndex = 0; this.button1.Text = "Shut Down"; this.button1.Click += new EventHandler(this.button1_Click);
this.AutoScaleBaseSize = new Size(6, 14); this.ClientSize = new Size(292, 273); this.Controls.Add(button1); this.Name = "Form1"; this.Text = "shutdown test"; this.ResumeLayout(false); }
[STAThread] static void Main() { Application.Run(new Form1()); }
private void button1_Click(object sender, System.EventArgs e) { WindowsIdentity identity = WindowsIdentity.GetCurrent(); IntPtr token = identity.Token; IntPtr luid = (IntPtr)0; IntPtr previousState = (IntPtr)0; IntPtr previousStateLength = (IntPtr)0; LUID privilegeId = new LUID (); PlatformImport.LookupPrivilegevalue ("", "SeShutdownPrivilege", ref privilegeId);
TOKEN_PRIVILEGES privileges = new TOKEN_PRIVILEGES(); privileges.PrivilegeCount = 1; privileges.Luid = privilegeId; privileges.Attributes = 2; PlatformImport.AdjustTokenPrivileges (token, false, ref privileges, Marshal.SizeOf(privileges), previousState, previousStateLength);
if (PlatformImport.GetLastError() != 0) return;
if(!(PlatformImport.ExitWindowsEx(0x01 | 0x04, 0))) return; } } }