注册 登录
编程论坛 Delphi论坛

关机程序关不了机

s912360101 发布于 2010-01-22 16:55, 1098 次点击
小弟测试一个xp的关机程序。但是老是效果不好按F9可以运行。但就是关不了机??各位大侠看看哦!!
procedure Get_Shutdown_Privilege;//提权
var
    rl: Cardinal;
    hToken: Cardinal;
    tkp: TOKEN_PRIVILEGES;
begin
    OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
    if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid) then
    begin
      tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
      tkp.PrivilegeCount := 1;
      AdjustTokenPrivileges(hToken, False, tkp, 0, nil, rl);
    end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  ExitWindowsEx(EWX_FORCE+EWX_SHUTDOWN,0);
end;

end.
6 回复
#2
s9123601012010-01-22 16:56
难道盗版的xp不行??
#3
shuang2009112010-01-25 22:41
你虽然写了个提权函数在那里,但都没有调用!
这样应该可以
procedure TForm1.Button1Click(Sender: TObject);
begin
  Get_Shutdown_Privilege;
  ExitWindowsEx(EWX_FORCE+EWX_SHUTDOWN,0);
end;
#4
s9123601012010-01-26 20:34
谢谢了。已经解决了!!!~~~
#5
dong_first2010-01-31 12:24
ExitWindowsEx 函数只适应于 Win98,Winxp不支持。
#6
adrian02010-02-02 11:43
procedure TForm1.Button1Click(Sender: TObject);
begin
  Get_Shutdown_Privilege;
  ExitWindowsEx(EWX_FORCE+EWX_SHUTDOWN,0);
end;

这里没有调用呀
#7
yct06052010-02-04 16:39
应该是权限问题了,注意要添加管理员权限。
1