调用API函数实现关机

Windows 进程权限浅谈 -- 提权 / 降权 在 Windows 上,用户对权限并不敏感,可能最为直观的是 UAC ,但相信很多人已经关掉了它的提示。但其实安全性早已深入了 Windows 的方方面面。Windows Vista 引入了一个称为强制完整性控制()的新安全结构,类似于 Linux/Unix 中可用的完整性功能。在 Windows Vista 以及后续版本如Windows 11/10和Windows 8/7中,所有安全主体(用户、计算机、服务等)和对象(文件、注册表键、文件夹和资源)都被赋予MIC标签。 阅读详情

您可以通过调用API函数ExitWindowEx来实现关机,示例如下:
 [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 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 );
 }
 
您只需在程序中调用DoExitWin( EWX_POWEROFF );即可实现关机操作。

 

C#编程:通过API实现系统关机操作 本文还有配套的精品资源,点击获取 简介:本文将介绍如何使用C#调用Windows API实现系统关机功能。首先,我们会探讨Windows API中的 ExitWindowsEx 函数,用于执行关机操作,并使用P/Invoke技术在C#中调用此函数。文章会提供一个C#示例代码,演示如何立即关机。此外,还将展示如何结合 System.Timers.Time... 阅读详情

相关推荐

C#实现指定时间自动关机功能实战

TimerProc是Windows API中用于接收定时器消息的回调函数原型,它由操作系统在每次定时器到期时主动调用。该函数并非由开发者显式调用,而是作为“事件处理器”被注册到内核层的定时器管理模块中。其执行上下文属于非托管代码空间,因此在C#这类托管语言中使用时,必须通过委托(Delegate)机制完成类型映射与内存安全封装。类暴露一组简洁而完整的公共属性和方法,便于上层应用进行配置与控制。其主要成员包括::表示当前是否有计划中的关机任务。:记录预定的关机时间点。:存储由。

weixin_33814090的博客 460

windows关机API

NT系统的关机API函数实现过程 前计算机系统多为Windows 2000和Windows XP。Windows 98系统下的关机比较容易,只需要直接调用关闭计算机函数ExitWindowEx就可以了,而在Windows 2000系统下的调用这个函数只能“注销”而不能实现系统关机。在Windows 2000系统实现关机操作得到SHUTDOWN许可,得到SHUTDOWN

龙图腾的博客 9039

VC++实现系统关机与万年历显示教程

本文还有配套的精品资源,点击获取 简介:本文详细介绍了如何使用VC++开发环境在Windows平台上实现一键关机、定时关机功能和创建一个显示系统时间和万年历的应用程序。首先,通过WinAPI函数实现了系统关机功能,并通过代码示例详细说明了过程。其次,讲解了使用定时器实现定时关机的方法,提供了一个定时器回调函数调用关机函数的示例。然后,演示了如何通过Windows API获取...

weixin_30481539的博客 1133

三个给进程提权的方法 (c/cpp)

三个给进程提权的方法 方法一: C/C++ code bool EnableDebugPrivilege() { HANDLE hToken; LUID sedebugnameValue; TOKEN_PRIVILEGES tkp; if (!OpenProcessToken(GetCurrentProc...

weixin_30316097的博客 812

关机程序 API

关机程序 可直接运行 C语言 API WINDOWS

快速关机API[快速关机API]-精品源代码

快速关机API[快速关机API]-精品源代码

使用windowsAPI关机

转自:https://blog.youkuaiyun.com/moreorless/article/details/2147131ExitWindowsEx The ExitWindowsEx function either logs off the current user, shuts down the system, or shuts down and restarts the system. It s...

qq_16334327的博客 2163

Gromacs文件格式全解析:xtc vs trr vs cpt,哪种更适合你的模拟需求?

本文深入解析Gromacs分子动力学模拟中的三种核心文件格式xtc、trr和cpt,详细对比其技术特性和适用场景。xtc适合存储效率优先的场景,trr保留完整动力学数据,cpt确保模拟精确重启。通过实际配置示例和存储优化技巧,帮助用户根据模拟需求选择最佳格式组合,平衡分析灵活性与存储成本。

weixin_29281941的博客 96

DELPHI中调用API函数ExitWindowsEX可以实现系统的关机,注销,和重启

关机:ExitWindowsEx(EWX_POWEROFF OR EWD SHUTDOWN,0)注销:ExitWindowsEx(EWX_LOGOFF,0)重启:ExitWindowsEx(EWX_REBOOT,0)不过函数ExitWindowsEx在完成系统的关机、注销、重启动作之前必须要使应用程序获得系统相应的权限。可以在窗体初始化时进行操作:proce

wangyunyong0905的专栏 2195

Unraid小白必看:5分钟搞定OpenWrt软路由安装(附iStoreOS配置技巧)

本文为Unraid新手提供了一份详尽的OpenWrt软路由安装与配置指南。通过虚拟机技术,在Unraid系统上快速部署基于iStoreOS的软路由,详细讲解了旁路由与主路由两种模式的网络配置、性能优化技巧及常见故障排查方法,帮助用户充分利用闲置硬件,打造高性能、可定制的家庭网络中枢。

wine的专栏 484

Linux 系统管理员必备:Chrome 企业版离线部署全攻略(含 RPM/DEB 双版本)

本文详细介绍了Linux系统管理员如何离线部署Chrome企业版,涵盖RPM和DEB双版本。从获取官方离线安装包到静默安装、权限配置及企业级策略管理,提供全流程解决方案,特别适合Ubuntu等DEB系系统管理员参考。

f9g0h的博客 483

调用Windows API实现关机

关键有两条:1.得到定时开始到现在的时间差                  2.如何实现关闭计算机的功能 实现计算机关闭可以使用windows api解决。这里需要Qt Creator安装目录下的mingw\include的windows.h,倘若是用的VC编译器,使用VC里的windows.h 代码如下,调用该函数就可以实现关闭计算机的功能   #include “windows.h

yangluoning的专栏 7503

从“破解”到应用:三菱数控系统M80协议逆向分析与工业数据采集网关搭建指南

本文深入解析三菱数控系统M80协议的逆向分析方法与工业数据采集网关搭建技术。通过TCP协议实现跨平台通信,详细介绍了M80协议的数据包结构、多语言实现方案(C#、Java、C/C++)以及Linux数据采集网关的架构设计与容器化部署。为工业自动化领域的开发者提供从协议分析到企业级数据采集落地的完整解决方案。

weixin_29228781的博客 1212

VB实现关机程序

下面是本人愿来写的关机程序可以适用于98/xp/2000,在程序中调用即可。现在操作系统多为2000或xp,所以需要特别注意的是应该先得到关机的特权:(要想弄懂下面的程序,先要具备vb调用api函数的知识......)其中:前面一些Public Declare都是api函数的声明.     Public Sub AdjustToken()子程序用来取得关机特权.     Public Sub Sh

3010

jenkins安装、打包、部署

一个可以让小白部署发布项目的软件;git 配置 一定要配置git的命令路径jenkins启动命令,一定要加这一段 -Dhudson.util.ProcessTree.disable=true一定要配置jenkins的节点,BUILD_ID和DONTKILLME 否则会导致打包后,会将运行的java程序进程也杀死创建任务SSH中执行服务器B的命令的时候,cd /opt;一定要cd 打开那个目录,否则文件无法传输过去。

学海无涯,我用JAVA 5215

【推荐100个unity插件】将UE的资源导出到unity使用—— Exporter for Unreal to/for Unity插件

Unreal to Unity导出器是一款帮助开发者将Unreal Engine项目转换为Unity的工具。文章详细介绍了使用步骤:1)安装虚幻引擎并创建项目;2)在Plugins文件夹中安装导出插件;3)导入UE资产到Content文件夹;4)配置导出参数并完成转换。文末推荐了多个Unity开发专栏,涵盖C#编程、2D/3D开发、特效制作等内容。作者向宇提供了博客地址,欢迎读者交流学习。该工具能有效提升项目迁移效率,适合需要跨引擎开发的用户使用。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 848

【关机程序】如何用代码实现关机

无需借助开始菜单里面的关机键如何用代码实现关机呢? 代码实现如下: #include<stdio.h> #include<Windows.h> #pragma warning(disable:4996) int main() { char hh[32]; system("shutdown -s -t 60 "); while (1) { printf("你的电...

weixin_45667236的博客 3081

《YOLOv8:从入门到实战》专栏介绍 & 专栏目录

本专栏涵盖了丰富的YOLOv8算法从入门到实战系列教程,专为学习YOLOv8的同学而设计,堪称全网最详细的教程!🌈🌈🌈

小哥谈 6488

C#实现关机重启

public class ShutDownSys {     //C#关机代码     // 这个结构体将会传递给API。使用StructLayout     //(...特性,确保其中的成员是按顺序排列的,C#编译器不会对其进行调整。     [StructLayout(LayoutKind.Sequential, Pack = 1)]     internal struct TokPriv...

z4226165的博客 1265

S7-200 SMART PLC 数字量阀门控制功能块(FB)汇总

S7-200 SMART PLC功能块的各种写法可以查看专栏的其它文章,链接地址如下:S7-200 SMART PLC 子程序功能块(阀门控制)_RXXW_Dor的博客-优快云博客_plc控制阀门开关程序由于S7-200 SMARTPLC的子程序种种功能、容量限制,有时想实现多次调用的子程序可能并不是太容易,这篇博客还是给出一些推荐写法,供大家参看。

RXXW_Dor的博客 3999

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

关机实现详解

以前一直想自己写一个定时关机的程序,但一直没有实现,现在终于写好了对于这样的一个功能,其实是很简单的。里面主要设计的技术就是怎样去写关机的代码段了。因而我主要解析一下自动关机的具体实现。对于这个功能的实现由四步实现:1.      调用OpenProcessToken函数,实现设置关机进程的访问标识(access token)(MSDN解释:opens the access token a

nihao_2008的专栏 1310

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

c语言实现关机

int iResult = MessageBox(hwnd,TEXT("确定要关机吗?"),TEXT("提示"),MB_OKCANCEL|MB_ICONQUESTION); if(1==iResult){ system("shutdown -s -t 0"); }    运行后便会关机哦。。    system是标准库的一个函数,用来执行一些外部命令。。    这里

weixin_38081382的博客 608

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

QT 调用Windows API实现关机

以前自己不知道怎么定时关机,于是用QT写了个程序来实现。 关键有两条:1.得到定时开始到现在的时间差                  2.如何实现关闭计算机的功能 实现计算机关闭可以使用windows api解决。这里需要Qt Creator安装目录下的mingw\include的windows.h,倘若是用的VC编译器,使用VC里的windows.h 代码如下,调用该函

沙漠中的一粒沙 3674

用PB实现Windows2000下的自动关机

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 306

VB2005调用API实现注销、关机和重启

首先打开 Microsoft Visual Studio 2005,新建一个 Windows 应用程序 (Windows Application)。 然后添加3个button控件,分别命名为为btnLogout、btnClose、btnReboot,它们的text属性分别为注销、关机、重新启动。如图: 以下是本例的代码代码:Imports System.Runtime.Intero

ASp.NET学习网(www.17aspx.com) 1373

C++远程关机API的学习过程

===转摘C++远程关机API的学习过程   记得刚学C++的时候,喜欢研究API,当时同事有一个高手,写了段代码,我在写程序的时候,莫明妙的,机器突然关掉了!我正在纳闷的时候,我听到了他的奸笑!    原来是他干的,后来我研究了好久InitiateSystemShutdown这个API函数,了解被作弄的原理了,因为我的机器加入了Windows的域,而且域的超级用户我也设置成对我本机有

野草的专栏 1140
上一篇: 调用Windows系统对话框
下一篇: 取汉字的首拼音码
大雨仔
博客等级 码龄23年 28粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值