procedure ShutDownWindowsNT;
const SE_SHUTDOWN_NAME='SeShutdownPrivilege';
var hToken:THandle;
tkp:TTokenPrivileges;
tkpo:TTokenPrivileges;
zero
WORD;
begin
zero:=0;
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken);
LookupPrivilegeValue(nil,SE_SHUTDOWN_NAME,tkp.Privileges[0].Luid);
tkp.PrivilegeCount:=1;
tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,False,tkp,SizeOf(TTokenPrivileges),tkpo,zero);
//以上代码获取权限
ExitWindowsEx(EWX_POWEROFF,0);
end;