Delphi关机程序NT版

原创 2004年09月14日 21:25:00

以下是一段NT的关机程序(抄的)

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;

几个关机、重启NT系统的脚本(定时执行关机任务)

1.Reboot重启脚本(reboot.bat):@echo offsetlocalcd/d %temp%echo [version] > reboot.infset inf=InstallHinfS...
  • davidullua
  • davidullua
  • 2004年10月08日 20:57
  • 2196

再谈Delphi关机消息拦截 -- 之控制台程序 SetConsoleCtrlHandler

这里补充一下第一篇文章中提到的拦截关机消息Delphi消息拦截:http://blog.csdn.net/cwpoint/archive/2011/04/05/6302314.aspx 下面我再介绍一...
  • cwpoint
  • cwpoint
  • 2011年04月29日 22:37
  • 2859

Delphi实现通用的定时自动关机程序

一、问题的提出:运行某任务的计算机,尤其是服务器,如果能实现在无人职守的情况下,到达指定时间时自动关机,那么将极大地减轻系统管理员的负担,也会给我们的日常工作带来很大方便。    笔者用Delp...
  • my98800
  • my98800
  • 2016年08月29日 09:12
  • 1104

Delphi实现强制关机(适用于各个Win系统)

unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Co...
  • u010745617
  • u010745617
  • 2014年07月01日 07:47
  • 596

delphi 快速关机,无等待

//申请权限 procedure Get_Shutdown_Privilege;  var      rl: Cardinal;   hToken: Cardinal;     tkp: T...
  • y281252548
  • y281252548
  • 2016年06月20日 16:22
  • 373

Delphi 编写Windows NT服务

Delphi 编写Windows NT服务 1.产生一个Win32服务应用   产生一个Win32服务应用,选择File|New菜单,在New Items页中选择Service Application...
  • lee576
  • lee576
  • 2007年11月27日 16:21
  • 1388

Delphi 消息拦截篇 -- 之拦截系统关机、重启、注销

最近做的项目中需要拦截系统关机,因为我在FormCloseQuery中总是把CanClose设为False,不拦截关机的话直接导致系统中的关机、重启、注销都失效了!导致用户不能关机!(提示用户说要关机...
  • cwpoint
  • cwpoint
  • 2011年04月05日 00:47
  • 6490

Delphi开发NT Service程序

  Windows系统中有许多服务程序,他们最大的优点是,如何机器重启了,那么无需登陆系统,服务已经重新启动.这样就保证了一些后台服务器的无人值守.那么在Delphi又为开发这种程序准备了什么呢?  ...
  • shuaihj
  • shuaihj
  • 2004年10月30日 09:25
  • 1607

手把手教您使用delphi定制您的软件开机启动

一、建立项目 本操作使用的delphi版本为 delphi2007  操作系统为win7 第一步是建立项目,首先需要你在硬盘新建一个文件夹,文件夹的名字你可以自己取,我这里命名为‘注册表开机启动设...
  • sushengmiyan
  • sushengmiyan
  • 2013年03月14日 23:24
  • 3269

程序的开机关机重启,开机启动,休眠功能delphi实现

TShutDownStatus = (sdShutDown,sdReboot,sdLogOff,sdPowerOff);  procedure ShutDown(sdStatus : TShut...
  • zang141588761
  • zang141588761
  • 2016年07月08日 10:59
  • 1173
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi关机程序NT版
举报原因:
原因补充:

(最多只允许输入30个字)