J
jordie
Unregistered / Unconfirmed
GUEST, unregistred user!
请知道的朋友指点一下如何禁止强制关机,如:
//////////////////////////////////////////////////////////////////////
function ShutDown(uFlags:Cardinal):boolean; //开始winnt下的强迫关机
const
ADjust_Priv=Token_Query or Token_Adjust_Privileges;
ShtDwn_Priv='SeShutDownPrivilege';
Priv_Size=Sizeof(TTokenPrivileges);
var
Lenword;
TokenPriv,Dummy:TTokenPrivileges;
Token:THandle;
Error:integer;
begin
Error:=0;
if not OpenProcessToken(GetCurrentProcess(),Adjust_Priv,Token) then
Error:=Error or 4;
if not LookUpPrivilegeValue(nil,ShtDwn_Priv,TokenPriv.Privileges[0].Luid) then
Error:=Error or 8;
TokenPriv.Privileges[0].Attributes:=Se_Privilege_Enabled;
TokenPriv.PrivilegeCount:=1; //设置一个权限
if not AdjustTokenPrivileges(Token,false,TokenPriv,Priv_Size,Dummy,Len) then
Error:=Error or 16;
ExitWindowsEx(uFlags,0);
Result:=(Error=0);
end; //结束强迫关机过程
ShutDown(Ewx_PowerOff+Ewx_Force);
//////////////////////////////////////////////////////////////////
以这样的代码写的软件。
请给个思路或代码。
//////////////////////////////////////////////////////////////////////
function ShutDown(uFlags:Cardinal):boolean; //开始winnt下的强迫关机
const
ADjust_Priv=Token_Query or Token_Adjust_Privileges;
ShtDwn_Priv='SeShutDownPrivilege';
Priv_Size=Sizeof(TTokenPrivileges);
var
Lenword;
TokenPriv,Dummy:TTokenPrivileges;
Token:THandle;
Error:integer;
begin
Error:=0;
if not OpenProcessToken(GetCurrentProcess(),Adjust_Priv,Token) then
Error:=Error or 4;
if not LookUpPrivilegeValue(nil,ShtDwn_Priv,TokenPriv.Privileges[0].Luid) then
Error:=Error or 8;
TokenPriv.Privileges[0].Attributes:=Se_Privilege_Enabled;
TokenPriv.PrivilegeCount:=1; //设置一个权限
if not AdjustTokenPrivileges(Token,false,TokenPriv,Priv_Size,Dummy,Len) then
Error:=Error or 16;
ExitWindowsEx(uFlags,0);
Result:=(Error=0);
end; //结束强迫关机过程
ShutDown(Ewx_PowerOff+Ewx_Force);
//////////////////////////////////////////////////////////////////
以这样的代码写的软件。
请给个思路或代码。