关闭系统问题!(50分)

  • 主题发起人 主题发起人 cjm
  • 开始时间 开始时间
C

cjm

Unregistered / Unconfirmed
GUEST, unregistred user!
有没有函数强行关闭系统中的任何程序且重新启动或关闭计算机???
ExitWindowsEx(EWX_FORCE, 0);
这个函数在2000和NT下不能重启和关闭计算机,什么原因???
 
你的参数可能不对。
 
转贴,我的程序中这是这样调用的.
function SetPrivilege(sPrivilegeName: string; bEnabled: boolean ): boolean;
var
; TPPrev,TP : TTokenPrivileges;
; Token : THandle;
; dwRetLen : DWord;
begin
; Result := False;

; OpenProcessToken(
; ; ;GetCurrentProcess, //handle to process
; ; ;TOKEN_ADJUST_PRIVILEGES //Required to change the privileges specified in an access token.
; ; ;or TOKEN_QUERY, //Required to query the contents of an access token.
; ; ;Token);

; TP.PrivilegeCount := 1;
; //retrieves the locally unique identifier (LUID) used on a specified system to
; //locally represent the specified privilege name.
; if( LookupPrivilegeValue(
; ; ; Nil, //attempts to find the privilege name on the local system.
; ; ; PChar( sPrivilegeName ), // address of string specifying the privilege
; ; ; TP.Privileges[ 0 ].LUID ) // address of locally unique identifier
; ; ; )then
; begin
; ; if( bEnabled )then //Give this privileges
; ; begin
; ; ; ;TP.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED;
; ; end
; ; else begin //NOT Give this privileges
; ; ; ;TP.Privileges[ 0 ].Attributes := 0;
; ; end;

; ; dwRetLen := 0;
; ; //enables or disables privileges in the specified access token.
; ; Result := AdjustTokenPrivileges(
; ; ; ; Token, // handle to token that contains privileges
; ; ; ; False, //modifies privileges
; ; ; ; TP, // pointer to new privilege information
; ; ; ; SizeOf( TPPrev ), // size, in bytes, of the TPPrev buffer
; ; ; ; TPPrev, // receives original state of changed privileges
; ; ; ; dwRetLen // receives required size of the TPPrev buffer
; ; ; ; );
; end;
; CloseHandle( Token );
end;

function WinExitInNT( iFlags : integer ) : boolean;
begin
; Result := True;
; if( SetPrivilege('SeShutdownPrivilege', True ) )then
; begin
; ; if( not ExitWindowsEx( iFlags, 0 ) )then
; ; begin
; ; ; ;Result := False;
; ; end;
; ; SetPrivilege('SeShutdownPrivilege', False )
; end
; else begin
; ; ; ;// handle errors...
; ; ; ;Result := False;
; end;
end;

//调用.
; ; ;WinExitInNT(EWX_SHUTDOWN+EWX_POWEROFF+EWX_FORCE);
 
后退
顶部