请教大虾:
在DELPHI中使用ExitWindowsEx()时(win2k下),好象执行失败,机器没有反映,
我也看了API帮助说要有SE_SHUTDOWN_NAME属性的权限,
但我不知道怎么调用[email protected]                  thankS

解决方案 »

  1.   

    var
        hToken :THandle ;
        tkp    :TOKEN_PRIVILEGES ;
        otkp   :TOKEN_PRIVILEGES ;
        dwLen  :Dword ;
    begin
        if OpenProcessToken(GetCurrentProcess ,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY ,hToken) then
        begin
            LookupPrivilegeValue(Nil ,'SeShutdownPrivilege' ,tkp.Privileges[0].Luid) ;
            tkp.PrivilegeCount := 1;
            tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
            AdjustTokenPrivileges(hToken ,False ,tkp ,sizeof(tkp) ,otkp ,dwLen) ;
            if (GetLastError() <> ERROR_SUCCESS) then
            begin
                Showmessage'AdjustTokenPrivileges enable failed.');
            end else
            begin
                ExitWindowsEx(EWX_POWEROFF ,0) ;
            end ;
        end
    end;