Главная страница
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.214 c
15-1342451691
brother
2012-07-16 19:14
2013.03.22
Посоветуйте телефон


15-1342307267
Германн
2012-07-15 03:07
2013.03.22
Внешний USB-hard drive в качестве системного.


2-1342010595
Pcrepair
2012-07-11 16:43
2013.03.22
Чем можно заменить AnsiPos?


2-1334249726
novichek
2012-04-12 20:55
2013.03.22
Поиск цвета на битмапе


15-1342038603
Юрий
2012-07-12 00:30
2013.03.22
С днем рождения ! 12 июля 2012 четверг