Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.19;
Скачать: CL | DM;

Вниз

как дать привелегии на перегрузку или отключение?   Найти похожие ветки 

 
truntaev   (2003-10-10 21:52) [0]

попытался из С взять пример но не заладилось с функцией
AdjustTokenPrivileges
Заранее признателен за помощь!
procedure TForm1.Button1Click(Sender: TObject);
var

hToken : THANDLE;
NewState: PTokenPrivileges;
prevs: PTokenPrivileges;
p: Pointer;
s: PChar;
t: TTokenPrivileges;
begin

s:="EWX_SHUTDOWN";
OpenProcessToken (GetCurrentProcess (), TOKEN_ADJUST_PRIVILEGES,hToken);
p:=AllocMem (sizeof(TOKEN_PRIVILEGES) + sizeof (LUID_AND_ATTRIBUTES));
NewState := PTokenPrivileges(p);
prevs:=NewState;
NewState.PrivilegeCount:=1;
LookupPrivilegeValue(#0,s,
NewState^.Privileges[0].Luid);
NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
t:=TTokenPrivileges(NewState^);

{выдается синтаксическая ошибка на этой функции}
{как с этим бороться?}
AdjustTokenPrivileges (hToken, LongBool(FALSE), t, 0, prevs, 0);
free (NewState);
CloseHandle (hToken);
ExitWindowsEx (EWX_REBOOT, 0);
end;


 
Burmistroff   (2003-10-11 23:07) [1]

EnablePrivilege("SeShutdownPrivilege");

procedure EnablePrivilege(lpszPrivilege:LPCTSTR);// получение привилегий в Win NT
{
Enable privilege for Windows NT
}
var
hToken: THANDLE;
tp : TOKEN_PRIVILEGES;
luid: Int64;
tpPrevious: TOKEN_PRIVILEGES;
cbPrevious : DWORD;
begin
cbPrevious := sizeof(TOKEN_PRIVILEGES);
if LookupPrivilegeValue( Nil, lpszPrivilege, luid )=false then exit;
if( not OpenProcessToken( GetCurrentProcess(),
TOKEN_QUERY or TOKEN_ADJUST_PRIVILEGES,
hToken ) ) then exit;
tp.PrivilegeCount:= 1;
tp.Privileges[0].Luid := luid;
tp.Privileges[0].Attributes := (SE_PRIVILEGE_ENABLED);//0;
AdjustTokenPrivileges( hToken, FALSE, tp, sizeof(TOKEN_PRIVILEGES),
tpPrevious, cbPrevious );
if( GetLastError <> ERROR_SUCCESS ) then
else
CloseHandle( hToken );
end;



Страницы: 1 вся ветка

Текущий архив: 2003.12.19;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.021 c
1-62084
Guest
2003-12-09 05:46
2003.12.19
Ошибка при запуске программы


4-62316
XeON
2003-10-25 09:59
2003.12.19
Число иконок в exe, dll


1-62073
qwerty2
2003-12-08 18:01
2003.12.19
Левой стороне не может быть ничего присвоено


1-62152
Deedlit
2003-12-07 07:57
2003.12.19
Признак главной формы - как поменять?


3-61901
Olga_Oo
2003-11-27 13:40
2003.12.19
Qreport