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 美化单选按钮和复选按钮...
实例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# 自做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#语言的关键点,非托管接口的调用,以及实现定时...
- **Tile**:每个项目显示为一个完整大小的图标,旁边带有项目标签和子项信息(Windows XP 及更高版本支持)。 #### 六、示例代码 下面是一个简单的示例代码片段,用于演示如何初始化一个 ListView 控件,并添加...
C#开发Windows应用程序中经常需要去控制系统的音量,分两种方式: 1.使用Win Api控制 2.使用C++ dll控制 Win Api控制: 使用user32.dll和winmm.dll都可以控制系统音量,区别是Win系统的版本。winmm.dll Xp环境下...
在C#编程环境中,开发一个仿Windows XP操作系统任务栏菜单是一项常见的任务,它涉及到Windows Forms应用程序的设计和用户界面(UI)的构建。Windows Forms是.NET Framework提供的一种用于创建桌面应用程序的工具,它...
实验使用的平台是Windows XP系统,相关软件是Visual Studio 2010。 三、实验内容 实验内容包括两个部分:设计简易秒表和设计一个简单应用程序。 (1)设计简易秒表 设计一个简易秒表,通过一个文本框,以“216:...
3. **创建DataTable**:在C#代码中,创建一个DataTable对象,它是DataSet的一部分,用于在内存中存储表格数据。 4. **加载数据**:使用SQLiteDataAdapter从SQLite数据库中填充DataTable。SQLiteDataAdapter是一个...