如何用DELPHI实现XP机器的重起(100分)

  • 主题发起人 主题发起人 zjjzh
  • 开始时间 开始时间
Z

zjjzh

Unregistered / Unconfirmed
GUEST, unregistred user!
用EXITWINDOWSEX()在WINDOWS98下可以实现,但在XP中根本不起作用,用EXITWINDOWS()也只能使XP
注销,不能实现重起,谁能帮我解决这个问题啊!!!
 
procedure reboot_computer;
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
begin
application.Terminate;
end;
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
begin
application.Terminate;
end;

if (not ExitWindowsEx(EWX_REBOOT, 0)) then
begin
application.Terminate;
end;
end;
 
谢谢,分是你的了,我试过了,可以.
 
要是能给我注释下几个IF语句的作用就好了
 
后退
顶部