`

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);
      }
}


更多请访问猪猪社区http://www.5ipig.com/bbs
分享到:
评论

相关推荐

    【算法】C#代码关闭Windows XP

    ### C#代码关闭Windows XP的核心技术点 #### 1. 使用DllImport导入Windows API 为了在C#中调用Windows的原生API,我们需要使用`DllImport`属性来指定DLL库文件及函数的具体位置。在本例中,我们主要调用了以下四个...

    windowsxp电脑进程管理

    综上所述,通过C#的Process类和Windows Forms,我们可以构建一个功能丰富的进程管理工具,实现对Windows XP系统中进程的全面控制。这样的工具对于系统管理员和开发者来说非常有用,可以提升工作效率,同时理解这些...

    明日科技《C#示例源代码》(5-8)

    实例008 仿Windows XP系统的任务栏菜单 26 实例009 用树型列表动态显示菜单 28 第2章 控件开发与应用 实例010 自定义水晶按钮控件 34 实例011 自制数值文本框组件 38 实例012 美化单选按钮和复选按钮...

    c#使用shutdown关机命令让xp和vista关机

    本文将深入探讨如何使用C#编程语言结合Windows自带的`shutdown`命令来控制Windows XP和Vista系统的关机操作。我们将从理解`shutdown`命令的基本用法开始,然后逐步讲解如何在C#中调用此命令,并提供一些实用的应用...

    C# 仿XP记事本 功能和系统自带一样

    本文将深入探讨如何使用C#来实现一个与Windows XP系统自带记事本功能相当的应用程序。 首先,我们需要了解C#的基础知识。C#是微软公司推出的一种现代化、类型安全的编程语言,主要用于.NET框架。它支持类、接口、...

    C#汇川PLC通讯程式

    在C#代码中,你需要创建`SerialPort`实例,设置波特率、数据位、停止位、校验位等参数,确保与PLC的配置一致。 其次,了解PLC通讯协议至关重要。汇川EASY系列PLC可能支持多种通讯协议,如MODBUS RTU或其自定义协议...

    C# 自做XP定时关机系统.zip

    在这个项目“C# 自做XP定时关机系统”中,我们可以看到开发者使用C#语言创建了一个在Windows XP操作系统上实现定时关机功能的程序。 1. **C#编程基础**:首先,我们需要理解C#的基本语法,包括变量、数据类型、控制...

    明日科技《C#示例源代码》(9-12)

    实例008 仿Windows XP系统的任务栏菜单 26 实例009 用树型列表动态显示菜单 28 第2章 控件开发与应用 实例010 自定义水晶按钮控件 34 实例011 自制数值文本框组件 38 实例012 美化单选按钮和复选按钮...

    C#开放源代码控件 TaskbarNotifier

    5. **兼容性**: 由于TaskbarNotifier是用C#开发的,它应该能很好地兼容.NET Framework,并且在支持.NET的Windows版本上运行良好,包括Windows XP、Vista、7、8、10及更高版本。 6. **源代码可用**: 作为开源项目,...

    c#调用wlanapi连接到wifi示例

    本示例主要讲解如何在C#中使用P/Invoke技术来调用底层的WLANAPI函数,以便在XP系统上连接到WiFi。虽然描述中提到Win7可能需要稍作修改,但基本原理是相同的,因为WLANAPI在Win7及更高版本中也得到支持。 1. **P/...

    c# 加密和解密相关代码

    (1)打开Visual Studio 2008 开发环境,新建一个Windows窗体应用程序,并将其命名为Encrypt。 (2)更改默认窗体Form1 的Name 属性为Frm_Main,在该窗体中添加两个GroupBox 容器控件,其中, 在第一个GroupBox 中放...

    C#经典特效代码470例(PDF已经整理)

    **实例018:类似windowsxp的程序界面** - **实例说明**:模仿Windows XP操作系统的界面风格,包括开始菜单、任务栏等元素。 - **技术要点**: - 使用`MenuStrip`类创建类似开始菜单的界面。 - 使用`NotifyIcon`类...

    明日科技《C#示例源代码》(17-20)

    实例008 仿Windows XP系统的任务栏菜单 26 实例009 用树型列表动态显示菜单 28 第2章 控件开发与应用 实例010 自定义水晶按钮控件 34 实例011 自制数值文本框组件 38 实例012 美化单选按钮和复选按钮...

    c#操作USB_HID代码

    P/Invoke允许C#代码调用C或C++编写的原生DLL中的函数。例如,`SetupDiGetClassDevs` 函数用于枚举特定设备类,`HidD_GetFeature` 和 `HidD_SetFeature` 用于发送和接收设备特征报告,这些都是与HID设备通信的关键...

    短小强悍的C#定时关键程序

    这个程序的核心功能是能够设置任意延时后自动关闭计算机,兼容性涵盖Windows 7、Windows XP、Windows Server系列以及Windows NT以上的所有版本。下面我们将详细讲解C#语言的关键点,非托管接口的调用,以及实现定时...

    用C# 控制Windows系统音量的实现方法

    C#开发Windows应用程序中经常需要去控制系统的音量,分两种方式: 1.使用Win Api控制 2.使用C++ dll控制 Win Api控制:  使用user32.dll和winmm.dll都可以控制系统音量,区别是Win系统的版本。winmm.dll Xp环境下...

    C#-listview用法详解

    - **Tile**:每个项目显示为一个完整大小的图标,旁边带有项目标签和子项信息(Windows XP 及更高版本支持)。 #### 六、示例代码 下面是一个简单的示例代码片段,用于演示如何初始化一个 ListView 控件,并添加...

    C#开发的任务栏菜单

    在C#编程环境中,开发一个仿Windows XP操作系统任务栏菜单是一项常见的任务,它涉及到Windows Forms应用程序的设计和用户界面(UI)的构建。Windows Forms是.NET Framework提供的一种用于创建桌面应用程序的工具,它...

    C#设计简易时钟

    实验使用的平台是Windows XP系统,相关软件是Visual Studio 2010。 三、实验内容 实验内容包括两个部分:设计简易秒表和设计一个简单应用程序。 (1)设计简易秒表 设计一个简易秒表,通过一个文本框,以“216:...

    明日科技《C#示例源代码》(13-16)

    实例008 仿Windows XP系统的任务栏菜单 26 实例009 用树型列表动态显示菜单 28 第2章 控件开发与应用 实例010 自定义水晶按钮控件 34 实例011 自制数值文本框组件 38 实例012 美化单选按钮和复选按钮...

Global site tag (gtag.js) - Google Analytics