你是不是在windows nt下使用该函数,请说具体些。
解决方案 »
- delphi7编译的程序win7下如何[根据需要]获取管理员权限?
- delphi调用动态库 Readpebble
- 大侠救命啊.怎么把已经做好的windows程序改成b/s程序
- 如何开机运行程序而屏蔽其它程序(桌面)
- 一个问题
- 异常处理
- Delphi初级问题(高分请教).
- 新手急问,在线等待。为什么我设置TADOTABLE控件的tablename属性的时候,提示“数据提供者或其它服务返回E_FAIL状态”。
- 有位不错的QQ友发了一个none.exe,我不敢执行,但又想执行,我该怎么办呀?老大们?
- 谁可以帮我找到WIN98中的DCOMCNFG.EXE?我的WIN98已经设置成用户级了!
- 求 DELPHI 5 开发人员指南代码 MAIL [email protected]
- Delphi中怎样用Excel做报表!
// 如果成功返回 True.
Flags可用参数: EWX_LOGOFF:
(=0)
安全地关闭所有进程,并关闭用户登录。 EWX_SHUTDOWN:
(=1)
关闭系统。所有缓冲区的内容都能被安全的存盘,所有进程都将被停止。
对于Windows NT: 必须有 SE_SHUTDOWN_NAME 的安全特权方可进行此项操作。
对于Windows 95: 不必有任何特权。 EWX_REBOOT:
(=2)
关闭并重新启动系统。
对于Windows NT: 必须有 SE_SHUTDOWN_NAME 的安全特权方可进行此项操作。
对于Windows 95: 不必有任何特权。 EWX_FORCE:
(=4)
强制切断连接,关闭所有应用程序。当使用这个参数时,Windows 将不向正在运行的应用程序发送 WM_QUERYENDSESSION 和 WM_ENDSESSION 消息,有可能造成数据丢失。所以推荐只在紧急时使用这个参数。 EWX_POWEROFF:
(=8)
关闭系统并切断电源,需要ATX电源支持。 以下函数可以取得系统的安全特权:function SetPrivilege(sPrivilegeName : string;bEnabled : boolean ): boolean;
var
TPPrev,TP : TTokenPrivileges;
Token : THandle;
dwRetLen : DWord;
begin
Result := False;
OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,Token);
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;
dwRetLen := 0;
Result := AdjustTokenPrivileges(Token,False,TP,SizeOf( TPPrev ),TPPrev,dwRetLen);
end;
CloseHandle( Token );
end;
要获得 SE_SHUTDOWN_NAME 的安全特权可调用:
SetPrivilege( 'SeShutdownPrivilege', True );
SetSystemPowerState( true, true );//计算机睡眠,可以实现!
//重新启动计算机
ExitWindowsEx(EWX_REBOOT,2);
//关闭计算机
ExitWindowsEx(EWX_SHUTDOWN and EWX_POWEROFF ,1)
//注销
ExitWindowsEx(EWX_LOGOFF,1);
以上就是源代码!!
~~
错了,应为ExitWindowsEx(Flage, 0);
第二个参数为“0”,第一个参数为操作的标志。
这种情况我也遇到过
EXitWindows怎么用,能代替exitwindowex吗???