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的核心技术点 #### 1. 使用DllImport导入Windows API 为了在C#中调用Windows的原生API,我们需要使用`DllImport`属性来指定DLL库文件及函数的具体位置。在本例中,我们主要调用了以下四个...
综上所述,通过C#的Process类和Windows Forms,我们可以构建一个功能丰富的进程管理工具,实现对Windows XP系统中进程的全面控制。这样的工具对于系统管理员和开发者来说非常有用,可以提升工作效率,同时理解这些...
实例008 仿Windows XP系统的任务栏菜单 26 实例009 用树型列表动态显示菜单 28 第2章 控件开发与应用 实例010 自定义水晶按钮控件 34 实例011 自制数值文本框组件 38 实例012 美化单选按钮和复选按钮...
本文将深入探讨如何使用C#编程语言结合Windows自带的`shutdown`命令来控制Windows XP和Vista系统的关机操作。我们将从理解`shutdown`命令的基本用法开始,然后逐步讲解如何在C#中调用此命令,并提供一些实用的应用...
本文将深入探讨如何使用C#来实现一个与Windows XP系统自带记事本功能相当的应用程序。 首先,我们需要了解C#的基础知识。C#是微软公司推出的一种现代化、类型安全的编程语言,主要用于.NET框架。它支持类、接口、...
在C#代码中,你需要创建`SerialPort`实例,设置波特率、数据位、停止位、校验位等参数,确保与PLC的配置一致。 其次,了解PLC通讯协议至关重要。汇川EASY系列PLC可能支持多种通讯协议,如MODBUS RTU或其自定义协议...
在这个项目“C# 自做XP定时关机系统”中,我们可以看到开发者使用C#语言创建了一个在Windows XP操作系统上实现定时关机功能的程序。 1. **C#编程基础**:首先,我们需要理解C#的基本语法,包括变量、数据类型、控制...
实例008 仿Windows XP系统的任务栏菜单 26 实例009 用树型列表动态显示菜单 28 第2章 控件开发与应用 实例010 自定义水晶按钮控件 34 实例011 自制数值文本框组件 38 实例012 美化单选按钮和复选按钮...
5. **兼容性**: 由于TaskbarNotifier是用C#开发的,它应该能很好地兼容.NET Framework,并且在支持.NET的Windows版本上运行良好,包括Windows XP、Vista、7、8、10及更高版本。 6. **源代码可用**: 作为开源项目,...
本示例主要讲解如何在C#中使用P/Invoke技术来调用底层的WLANAPI函数,以便在XP系统上连接到WiFi。虽然描述中提到Win7可能需要稍作修改,但基本原理是相同的,因为WLANAPI在Win7及更高版本中也得到支持。 1. **P/...
(1)打开Visual Studio 2008 开发环境,新建一个Windows窗体应用程序,并将其命名为Encrypt。 (2)更改默认窗体Form1 的Name 属性为Frm_Main,在该窗体中添加两个GroupBox 容器控件,其中, 在第一个GroupBox 中放...
**实例018:类似windowsxp的程序界面** - **实例说明**:模仿Windows XP操作系统的界面风格,包括开始菜单、任务栏等元素。 - **技术要点**: - 使用`MenuStrip`类创建类似开始菜单的界面。 - 使用`NotifyIcon`类...
实例008 仿Windows XP系统的任务栏菜单 26 实例009 用树型列表动态显示菜单 28 第2章 控件开发与应用 实例010 自定义水晶按钮控件 34 实例011 自制数值文本框组件 38 实例012 美化单选按钮和复选按钮...
P/Invoke允许C#代码调用C或C++编写的原生DLL中的函数。例如,`SetupDiGetClassDevs` 函数用于枚举特定设备类,`HidD_GetFeature` 和 `HidD_SetFeature` 用于发送和接收设备特征报告,这些都是与HID设备通信的关键...
这个程序的核心功能是能够设置任意延时后自动关闭计算机,兼容性涵盖Windows 7、Windows XP、Windows Server系列以及Windows NT以上的所有版本。下面我们将详细讲解C#语言的关键点,非托管接口的调用,以及实现定时...
C#开发Windows应用程序中经常需要去控制系统的音量,分两种方式: 1.使用Win Api控制 2.使用C++ dll控制 Win Api控制: 使用user32.dll和winmm.dll都可以控制系统音量,区别是Win系统的版本。winmm.dll Xp环境下...
- **Tile**:每个项目显示为一个完整大小的图标,旁边带有项目标签和子项信息(Windows XP 及更高版本支持)。 #### 六、示例代码 下面是一个简单的示例代码片段,用于演示如何初始化一个 ListView 控件,并添加...
在C#编程环境中,开发一个仿Windows XP操作系统任务栏菜单是一项常见的任务,它涉及到Windows Forms应用程序的设计和用户界面(UI)的构建。Windows Forms是.NET Framework提供的一种用于创建桌面应用程序的工具,它...
实验使用的平台是Windows XP系统,相关软件是Visual Studio 2010。 三、实验内容 实验内容包括两个部分:设计简易秒表和设计一个简单应用程序。 (1)设计简易秒表 设计一个简易秒表,通过一个文本框,以“216:...
实例008 仿Windows XP系统的任务栏菜单 26 实例009 用树型列表动态显示菜单 28 第2章 控件开发与应用 实例010 自定义水晶按钮控件 34 实例011 自制数值文本框组件 38 实例012 美化单选按钮和复选按钮...