windows下自动关机(100)

  • 主题发起人 主题发起人 smallcat1985
  • 开始时间 开始时间
S

smallcat1985

Unregistered / Unconfirmed
GUEST, unregistred user!
如何实现xp下的定时关机,尽量不调用外部的程序
 
刚刚搜到的:{ statue: ewx_logoff, ewx_poweroff, ewx_reboot}procedure operatecomputer(statue:longword);var hToken:THandle; tkp : TOKEN_PRIVILEGES; ReturnLength : DWord;begin if (not OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_ALL_ACCESS or TOKEN_QUERY, hToken))then Exit; LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid); tkp.PrivilegeCount := 1; tkp.Privileges[0].Attributes :=SE_PRIVILEGE_ENABLED; ReturnLength :=0; AdjustTokenPrivileges(hToken, FALSE, tkp, 0,nil,ReturnLength); if (GetLastError() <> ERROR_SUCCESS) then Exit; if (not ExitWindowsEx(statue, 0)) then Exit;end;// operatecomputer(ewx_poweroff); 为关机
 
Windows XP的关机是由Shutdown.exe程序来控制的,位于Windows\System32文件夹中。对于NT/2000/XP,需要取得计算机名,获得关机特权后,才能关机:首先调用OpenProcessToken()函数得到存取令牌的句柄,然后调用AdjustTokenPrivileges()函数来使能该特权。Win32API定义了一组字符串常量来标识不同的特权,如关机特权是 ’SeShutdownPrivilege’。 
 
后退
顶部