无窗体关机

作者在 2010-02-04 13:39:40 发布以下内容

program Project1;

uses
  Windows,Messages;
 

{$R *.res}
procedure GetPrivilege;
var
  NewState:       TTokenPrivileges;
  lpLuid:         Int64;
  ReturnLength:   DWord;
  ToKenHandle:    Cardinal;
begin
  OpenProcessToken(GetCurrentProcess,
                   TOKEN_ADJUST_PRIVILEGES
                   OR TOKEN_ALL_ACCESS
                   OR STANDARD_RIGHTS_REQUIRED
                   OR TOKEN_QUERY,ToKenHandle);
  LookupPrivilegeValue(nil,'SeShutdownPrivilege',lpLuid);
  NewState.PrivilegeCount:=1;
  NewState.Privileges[0].Luid:=lpLuid;
  NewState.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
  ReturnLength:=0;
  AdjustTokenPrivileges(ToKenHandle,False,NewState,0,nil,ReturnLength);
end;

begin
   GetPrivilege;
   ExitWindowsEx(EWX_SHUTDOWN OR EWX_POWEROFF, 0);
end.

本来实现的是定时关机,而且是无窗体的程序。现在实现了无窗体。定时某一时间段关机。还得一段时间。我看了一下大小才15k。还算可以。主要是对无窗体的程序不那么陌生了。对uses 也有了更深的理解。关机,注销,和重启都要先提权。代码不变。看资料说Delphi编数据库好,但是对那没有多大兴趣。还是喜欢底层的东西。呵呵。
编程点滴 | 阅读 2152 次
文章评论,共1条
heishu100
2010-02-23 10:35
1
<img src="image/face/1.gif" class="face">
游客请输入验证码
浏览2354336次