如何在2000中对程序进行授权,给一个进程授予SE_PRIVILEGE_ENABLED权限,要有什么步骤,最好给出解释(50分)

  • 主题发起人 主题发起人 roarhorse
  • 开始时间 开始时间
R

roarhorse

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在2000中对程序进行授权,给一个进程授予SE_PRIVILEGE_ENABLED权限,要有什么步骤,最好给出解释
 
下面的代码是本坛子某个帖子里面的,出处不详了

function TWinSystem.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
begin
TP.Privileges[ 0 ].Attributes :=
SE_PRIVILEGE_ENABLED;
end else
begin
TP.Privileges[ 0 ].Attributes :=
0;
end;

dwRetLen := 0;
Result := AdjustTokenPrivileges(
Token,
False,
TP,
SizeOf( TPPrev ),
TPPrev,
dwRetLen );
end;
CloseHandle( Token );
end;


然后SetPrivilege( 'SeShutdownPrivilege', True )就可以获取关机权限
ExitWindowsEx 关机
SetSystemPowerState(True,True) 休眠
 
这个我也看个我主要是想知道步骤比如说给予一个程序授权先怎么样再怎么样然后怎么样上面那个代码有些东西好象是可以省去的
 

Similar threads

后退
顶部