关机源码( for WinNT)

C语言小日常—关机代码 C语言小日常——有趣的关机程序 阅读详情
procedure ExitWindowsNT(uFlags : integer);
var
  hToken : THANDLE;
  tkp, tkDumb : TTokenPrivileges;
  DumbInt : DWORD;
begin
  FillChar(tkp, sizeof(tkp), 0);
  // Get a token for this process
  if not (OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES
          or TOKEN_QUERY, hToken)) then
     raise Exception.create('OpenProcessToken failed with code '
               + inttostr(GetLastError));

  // Get the LUID for the Shutdown privilege
  LookupPrivilegeValue(nil, pchar('SeShutdownPrivilege'),
                       tkp.Privileges[0].Luid);

  tkp.PrivilegeCount := 1; // one privilege to set
  tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;

  // Get the shutdown provolege for this process
  AdjustTokenPrivileges(hToken, false, tkp, sizeof(tkDumb), tkDumb, DumbInt);

  // Cannot test the return value of AdjustTokenPrivileges
  if GetLastError <> ERROR_SUCCESS then
     Raise Exception.create('AdjustTokenPrivileges failed with code '
               + inttostr(GetLastError));

  // shut down the system and for all applications to close
  if not ExitWindowsEx(uFlags, 0) then
     Raise Exception.create('ExitWindowsEx failed with code '
               + inttostr(GetLastError));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ExitWindowsNT(EWX_POWEROFF); 
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ExitWindowsNT(EWX_REBOOT);
end;

关机二
procedure TtvAPIThing.ShutDown;
const
  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';   // Borland forgot this declaration
var
  hToken       : THandle;
  tkp          : TTokenPrivileges;
  tkpo         : TTokenPrivileges;
  zero         : DWORD;
begin
  if Pos( 'Windows NT', OSVersion ) = 1  then // we've got to do a whole buch of things
     begin
        zero := 0;
        if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
           begin
             MessageBox( 0, 'Exit Error', 'OpenProcessToken() Failed', MB_OK );
             Exit;
           end; // if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)
        if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
           begin
             MessageBox( 0, 'Exit Error', 'OpenProcessToken() Failed', MB_OK );
             Exit;
           end; // if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)


        // SE_SHUTDOWN_NAME
        if not LookupPrivilegeValue( nil, 'SeShutdownPrivilege' , tkp.Privileges[ 0 ].Luid ) then
           begin
              MessageBox( 0, 'Exit Error', 'LookupPrivilegeValue() Failed', MB_OK );
              Exit;
           end; // if not LookupPrivilegeValue( nil, 'SeShutdownPrivilege' , tkp.Privileges[0].Luid )
        tkp.PrivilegeCount := 1;
        tkp.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED;

        AdjustTokenPrivileges( hToken, False, tkp, SizeOf( TTokenPrivileges ), tkpo, zero );
        if Boolean( GetLastError() ) then
           begin
              MessageBox( 0, 'Exit Error', 'AdjustTokenPrivileges() Failed', MB_OK );
              Exit;
           end // if Boolean( GetLastError() )
        else
           ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN or Ewx_poweroff, 0 );
      end // if OSVersion = 'Windows NT'
   else
      begin // just shut the machine down
        ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 );
      end; // else
C语言实现关机程序(附完整源码) 阅读详情

相关推荐

一个简单的开关机源代码

关机源代码开关机源代码开关机源代码一个简单的开关机源代码

C语言——关机程序

2501_91438802的博客 551

整人关机源代码

整人关机源代码

c 语言自动关机代码,自动关机 C语言源代码

自动关机 C语言源代码,短小精悍,几乎不占资源。使用便捷!#include #include #include #include #include long int o,e;struct t{int hours,minutes,seconds;int hscd;}timez,times;void update(){ //每次调用update函数,相当于时间过了l0mstimes.hscd+...

weixin_36068015的博客 1928

winxp 关机重启命令shutdown的使用方法详解

   windows xp中有一个关机命令“shutdown”,通过他可以实现定时关机,但是在现如今这个命令已经很少有人使用了,取而代之的是各种定时关机的程序,这些程序因操作简单而深受用户喜欢。虽然有这些非常方便的第三方关机软件,但是我们还是要了解一下winxp 中的shutdown关机命令的使用。shutdown比较常用的地方有:定时在几点关机、多少秒钟后关机、关闭局域网内的远程计算机。 ...

xiaoqichuan的博客 2140

关机程序(c语言)

printf("请注意,你的电脑将在1分钟内关机,如果输入:我是猪,就取消关机\n");//input 是地址,不用加&if(strcmp(input,"我是猪")==0)printf("字符串不相等\n");printf("字符串相等\n");printf("\n已跳出所有循环\n");会导致代码难以维护(俗称"面条代码")。label: // 标签定义。

2401_85405744的博客 1653

强制电脑定时休息的服务程序

     自从儿子上周从上海回来后,天天泡在电脑上。我很担心他的视力,不过秋老虎这么厉害,除了晚上能够带他到操场活动外,白天也只能闷在空调屋里活动啦,不让他玩也过于不近人情。“堵不如疏”,就打算给他装个定时开关机软件,免得我不在家的时候他不知节制地消耗视力。儿子有一定的电脑软件安装基础,网上所找到的定时开关机软件都不符合要求。于是,就自己写了一个简单的程序。     程序功能:自启动服务模式运

网游漫笔 2405

如何实现cpp-httplib的跨平台技术兼容性?

在现代软件开发中,**技术兼容性**已成为决定项目成功与否的关键因素。cpp-httplib作为一款轻量级的C++ HTTP库,在追求高性能的同时,其**系统适配**能力直接影响到开发者的技术选型决策。当面对Windows旧版本、32位系统或特定编译环境时,如何确保HTTP服务的稳定运行,成为每个技术团队必须面对的挑战。 ## 兼容性矩阵:现状与限制分析 [![技术兼容性架构图](https:

gitblog_00867的博客 389

细说3721网络实名“病毒”(含部分源代码)

细说3721网络实名“病毒”(含部分源代码) 作者:邱腾 最近浏览一些门户网站时,会不知不觉的被安装上一个名为“3721网络实名”的 IE插件。虽说这些门户网站和3721本是好意,可是这样单方面地安装上这么一个 插件有点不妥!之所以说它是病毒,因为它同样是开机自动启动,而且虽然带来 一些方便,但是使系统运行的极不稳定,拖慢上网速度。在s8s8.net的论坛上看 到很多网友都说关机时经常会出现 ex

乱站乱弹 —— 阿新·乱站 1877

Code date creation的开发技术介绍

本文介绍了基于C++11开发的图形化数据生成器(v7.0.0)的技术实现,主要包含以下内容: 开发环境配置:使用VS Code+MinGW-w64,通过关键宏定义精简Windows头文件,依赖GDI+等图形库实现界面绘制。 图形界面架构:采用Win32消息驱动模型,实现独特的子控件整体偏移滚动机制,并利用DWMAPI实现Windows 11窗口圆角效果。 控件系统设计:支持四种工作模式切换,自定义字体和颜色控件,通过消息处理实现动态UI更新。 随机数据生成引擎:实现包括整数、字符串、浮点数、日期时间等7种数

互联网改遍了世界。 355

关机重启源码

根据自己的博文写的一个关机重启的小软件,请笑纳!

关机源代码

关机源代码

远程关机源代码

远程关机源代码,可实现远程关机。对于远程关机很方便,也是学习的好实例

Windows API 函数

《Windows API函数手册》摘要 本文档是Windows平台开发的权威参考手册,全面收录774个核心API函数,涵盖系统管理、进程线程、窗口消息、文件操作、图形处理等12大功能模块。手册采用结构化编排,主要特点包括: 编码规范 详细区分多字节(char)与宽字符(wchar_t)编码体系 提供LPSTR/LPCWSTR等字符串指针类型的完整解析 说明UTF-8与GBK编码转换的实际应用场景 核心功能模块 窗口创建:完整展示从注册类到消息循环的窗口生命周期 文件操作:覆盖CreateFile/ReadF

gqk01的博客 842

android系统关机源码(9.0)流程分析

android系统关机流程分析

android 系统定制开发那些事 2955

C# 关机源代码

using System;using System.Text;using System.Diagnostics;using System.Runtime.InteropServices;namespace WinControl { ///  /// Specifies the type of restart options that an application can use. ///  p

jiangfeng的专栏 1874

XP系统自带快速关机命令的使用:

XP系统自带快速关机命令的使用:   新建文本文档--顶格输入“shutdown -s -t 0 -f”--文件--另存为--关机.bat   说明:   批处理文件。扩展名为bat。   -s:机关。(-r:重启)   -t:剩余多少秒内关机。“0”为立即关机。   -f:强制关机,忽略所有程序应答。   可以将关机.bat文件存放在桌面或快速启动栏,便可以方便地使用了,不必绕路(...

weixin_34360651的博客 207
上一篇: 神啊,赐个妞!!!
下一篇: 一口气看完了蔡学镛的--爪哇夜未眠(第二版)
SafeF8
博客等级 码龄22年 10粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值