C#代码关闭Windows XP

using System;
using System.Runtime.InteropServices;
 
class shoutdown{
 [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 );
 }
   public static void Main()
   {
    Console.WriteLine("正在关闭计算机……");
    // 修改 EWX_SHUTDOWN 或者 EWX_LOGOFF, EWX_REBOOT等实现不同得功能。
    // 在XP下可以看到帮助信息,以得到不同得参数
    // SHUTDOWN /?
    DoExitWin(EWX_SHUTDOWN);
   }
}

时间: 2025-01-08 11:14:35

C#代码关闭Windows XP的相关文章

怎样关闭Windows XP SP3的DEP功能

  有些朋友不喜欢Windows XP SP3的DEP(数据执行保护)功能,因为有些软件在运行的时候总被干扰,想彻底关闭DEP,方法如下. 我们需要对C:boot.ini文件做点手脚. 首先,改变它的只读属性,右键单击该文件选择"属性",取消"只读"属性. 然后用记事本来对boot.ini进行编辑,找到以multi(0)disk(0)开头的条目,在那一行的结尾是/noexecute,这正是DEP生效的标志.你可以将/noexecute改为/execute,最后重新启

关闭Windows XP自动播放功能

默认情况下,一旦将光盘 插入光驱,或者接插上闪存.http://www.aliyun.com/zixun/aggregation/28213.html">移动硬盘时,Windows XP的自动播放功能就读取驱动器,同时显示一个 对话框,要求你选择是否打开其中的视频.音频.图片文件.有时,这项自动功能可能会给你带来不小的麻烦,如果你想关闭这项功能,跟我来吧. 一.属性设置法 如果你要关闭单个移动存储设备的"自动播放"功能,操作步骤 如下: 1.单击"开始→我的电

如何关闭Windows XP系统默认共享

很多朋友都觉得奇怪,明明自己的计算机没有设置共享文件夹,但是别人却可以轻松的访问自己电脑中的文件.其实很多时候都是Windows默认共享惹的祸,系统默认为每个分区都建立了一个共享,只不过在共享名后加了$,这样我们看不到共享的标志,就以为没有设置共享,带来了安全隐患,那么该如何将这些默认的共享文件夹关闭呢?下面我们就以Windwos XP为例向大家介绍几种常见的解决方法. 一.直接关闭法 由于默认隐藏共享是针对分区的,因此我们可以在我的电脑窗口中直接右击盘符名称,在弹出的菜单中选择"共享和安全&q

JS特效代码--仿windows xp左侧菜单效果

 <html> <head> <style type="text/css"> <!-- UNKNOWN { COLOR: #215dc6; TEXT-DECORATION: none} A:visited { COLOR: #215dc6; TEXT-DECORATION: none} A:hover { COLOR: #6699cc; TEXT-DECORATION: none} A:active { COLOR: #ff0000; TEXT

Windows XP超级应用技巧28例

window|技巧 如果你需要重装windows xp,通常必须重新激活.事实上只要在第一次激活时,备份好 windowssystem32目录中的wpa.dbl文件,就不用再进行激活的工作了.在重装windows xp后,只 需要复制该文件到上面的目录即可.(这条把它费了吧!根本没有用的,为了保存原文不变,还是把它保留吧!不然我就把它删了算了)呵呵!!! 2. 如何知道自己的windows xp是否已激活 打开开始→运行,在弹出的对话框中输入:oobe/msoobe /a,回车后系统会弹出窗口告

用XP-AntiSpy优化Windows XP SP2系统

目前,很多朋友都安装了Windows XP SP2,但是在默认情况下,Windows XP SP2会很武断地开启许多服务,对于个人用户来说,有些服务完全没必要启动,不仅浪费你的系统资源,而且它还在很多情况下会自动连接网络,虽然微软声称此举不会收集个人信息,但是总让人心里打鼓.放心不下!有什么好的办法来优化Windows XP SP2,把那些不安全的地方全部关闭呢?其实,利用XP-AntiSpy这款软件就可以帮你这个大忙! 软件名称:XP-AntiSpy 软件版本:V3.94-1简体中文版 软件大

windows XP全面系统优化教程

德国人的Windows XP系统优化补丁是不是看了很多的Windows XP的优化文章,把系统也是折腾得死去活来,还是老牛拉破车.下面我们就业来详细介绍人一下windows XP全面系统优化. 一.系统属性中的项目∶ 鼠标右健单击桌面上的"我的电脑",选择"属性",打开"系统属性" 对话框 1.关闭系统还原 找到系统还原选项, 如果你不是老噼里啪啦安装一些软件(难道你比我还厉害),你也可以去掉,这样可以节省好多空间.将"在所有盘中禁用系

Windows XP能够全自动维护系统

  1. 建立Main.bat文件 以管理员身份登录Windows XP,在系统盘的根目录下新建一个名为Main.bat的文件(文件名可以随便取,下同)并输入如下内容: cd C: cd Windowssystem32 defrag C: /f chkntfs C: 2. 建立Main.inf文件 新建一个文件名为Main.inf的文件并输入: [version] Signature= "$CHICAGO$" AdvancedINF= 2.5,"advpack.dll&quo

在Windows XP下如何建立无线局域网

  说明: 1.如果是利用第三方的管理软件进行无线网络连接的设置,请在"无线网络连接属性"对话框中单击"无线网络配置标签",并将"用Windows来配置我的无线网络配置"前的复选框对勾去掉,以关闭Windows XP自带的无线网络管理,其设置与上述Windows XP自带的无线网络管理大同小异,具体请参考相应的使用说明. 操作步骤: 1.启用无线网卡:请首先确认无线网卡的驱动程序已经正确安装,并打开无线网卡天线开关.联想笔记本大部分是FN+F5(