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

Вниз

Как изменить привилегии у процесса?   Найти похожие ветки 

 
Дмитрий   (2010-01-03 16:53) [0]

handle есть, но не удаётся изменить привилегии у другого процесса. Делаю через OpenProcessToken, потом AdjustTokenPrivileges. Для своего процесса всё хорошо, но для чужого - не идёт.


 
Eraser ©   (2010-01-03 19:28) [1]

скорее всего прав не хватает, какая ошибка?


 
Boolean ©   (2010-01-03 20:01) [2]

ошибки нет никакой вообще, GetLastError молчит. Проверяю выдачей прав на выключение системы (SeShutdownPrivilege). Мой процесс получает эти права и может выключить комп ( ExitWindowsEx(EWX_SHUTDOWN,0); ), но выдача этого же самого права другому процессу для такой же операции оканчивается ничем...


 
Дмитрий   (2010-01-03 20:05) [3]

Это на установку привилегий:
Function SetPrivilege(aPrivilegeName: String; aEnabled: Boolean; Hlink: THandle): Boolean;
Var TPPrev,
     TP: TTokenPrivileges;
     Token: THandle;
     dwRetLen: DWord;
Begin  
Result:=False;
OpenProcessToken(Hlink, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token );
TP.PrivilegeCount:=1;
IF (LookupPrivilegeValue(nil,PChar(aPrivilegeName),TP.Privileges[0].LUID )) then  
 Begin  
  IF aEnabled 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;

---------------------------------------
А вот вызов этой функции:

Hhandle := ShellExecute(0, nil, "H:\NAME.exe", nil, nil, SW_HIDE); //получили handle процесса
SetPrivilege("SeShutdownPrivilege", true, Hhandle );


 
Riply ©   (2010-01-03 20:35) [4]

> [3] Дмитрий   (03.01.10 20:05)

(c) Help (ShellExecute):
Return Value
Returns a value greater than 32 if successful, or an error value that is less than or equal to 32 otherwise. The following table lists the error values. The return value is cast as an HINSTANCE for backward compatibility with 16-bit Windows applications. It is not a true HINSTANCE, however. The only thing that can be done with the returned HINSTANCE is to cast it to an int and compare it with the value 32 or one of the error codes below.


 
Boolean ©   (2010-01-03 21:01) [5]

Т.е. ShellExecute не возвращает дескриптор процесса никаким боком??? Хм, а я думал почему значение всего двузначное показывало.=(
(Сошлюсь на праздники =) )
ОК, тогда вопрос другого рода, как мне узнать дескриптор процесса зная путь к файлу?


 
Дмитрий С ©   (2010-01-03 23:36) [6]


> Boolean ©   (03.01.10 21:01) [5]

Перечислить процессы, их же несколько может быть. Проще запускать с помощью CreateProcess


 
Дмитрий   (2010-01-03 23:40) [7]

Как несколько?=) У меня есть уникальный адрес, путь к файлу, совпадений быть не может. Как по этому пути, условно C:\Project.exe определить handle процесса?


 
Riply ©   (2010-01-04 01:10) [8]

> [7] Дмитрий   (03.01.10 23:40)
> Как несколько?=) У меня есть уникальный адрес, путь к файлу, совпадений быть не может

А что мешает стартовать "уникальному файлу" дважды ?
Я бы воспользовалась советом:
> [6] Дмитрий С ©   (03.01.10 23:36)
> Проще запускать с помощью CreateProcess


 
Игорь Шевченко ©   (2010-01-04 02:21) [9]

Не надо разными никами в одной ветке писать, это не приветствуется.

Надо читать справку по примененным функциям (по всем), когда какие значения возвращаются и что они значат.
У любых фукнции WinAPI, которые возвращают результат, надо проверять этот реультат, а не так, что OpenProcessToken и хрен бы с ним.


> Как по этому пути, условно C:\Project.exe определить handle
> процесса?


Используй ShellExecuteEx, она возвращает Handle процесса (не забудь сказать в маске SEE_MASK_NOCLOSEPROCESS)



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

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

Наверх




Память: 0.49 MB
Время: 0.091 c
2-1338069326
novichek
2012-05-27 01:55
2013.03.22
DSPack SampleGrabber


15-1347955003
Kerk
2012-09-18 11:56
2013.03.22
Книжка "Выучи Delphi за 21 день" явно устарела.


2-1339516288
простофан
2012-06-12 19:51
2013.03.22
запись состояния


2-1337342744
NieL
2012-05-18 16:05
2013.03.22
функцию, которая проверяет попадание точки в прямоугольник


15-1350564105
neo1
2012-10-18 16:41
2013.03.22
Cisco выделил 5 млн рублей на стартап-проекты