你仔细看
ExitWindowsEx的帮助了吗?http://www.csdn.net/Expert/forum.asp?typenum=8&searchKeys=ExitWindowsEx&roomid=3&author=&tabletype=now
ExitWindowsEx的帮助了吗?http://www.csdn.net/Expert/forum.asp?typenum=8&searchKeys=ExitWindowsEx&roomid=3&author=&tabletype=now
解决方案 »
- 请教一个D7写的DLL,调用出现Stack OverFlow的问题,谢谢!
- 求助:在Delphi上显示swf动画
- FASTREPORT4 中文显示问题
- 简单问题。RichEdit上用鼠标左键点弹出菜单,它又弹出一遍,怎么解决。
- 用ListView显示数据库的内容,怎么在增加一个记录后能马上在ListView上显示新记录啊,是刷新数据库吗?
- Delphi7的QuickRep控件问题
- 一个很简单的问题,请多多指教
- delphi我回了!!!!!!!!!!!!!
- 各位高手,请教一下。某一在线的软件,Installshield在某一次打安装包时出现了差异,以至于在下一个版本升级的时候,不能够升级了,请问如何处理?
- 如何在windows95中获取物理硬盘的系列号(不是磁盘卷系列号)
- 请问try......except..为什么捕捉不到记录的主键值重复的异常?形式如内。
- 如何用sql语句进行日期类型的查询
ExitWindowsEx(
UINT uFlags,
DWORD dwReserved
);
uFlags
EWX_FORCE
EWX_LOGOFF
EWX_POWEROFF
EWX_REBOOT
EWX_SHUTDOWN
在NT/2000你的进程必须有足够的优先权否则不执行这种操作
win9x无优先权限制
要先用AdjustTokenPrivileges设置权限
function SetPrivilege(sPrivilegeName:string;bEnabled:boolean):boolean;
var
TP,TPPre:TTokenPrivileges;
Token:THandle;
dwLength:DWORD;
begin
result := false;
OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,Token);
try
TP.PrivilegeCount := 1;
if LookupPrivilegeValue(nil,PChar(sPrivilegeName),TP.Privileges[0].LUID) then
begin
if bEnabled then
TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
else
TP.Privileges[0].Attributes := 0;
dwLength := 0;
Result := AdjustTokenPrivileges(Token,false,TP,sizeof(TPPre),TPPre,dwLength);
end;
finally
CloseHandle(Token);
end;
end;调用:
SetPrivilege('SeShutdownPrivilege',true);
ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE or EWX_POWEROFF,0);