Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
Дмитрий   (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 вся ветка

Форум: "WinAPI";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.074 c
2-1332577830
Pcrepair
2012-03-24 12:30
2013.03.22
TStringList и перевод символов в нижний регистр


15-1337100337
I
2012-05-15 20:45
2013.03.22
Кто нибудь пользуется LZ APi?


15-1334989775
TSubject
2012-04-21 10:29
2013.03.22
Кто работал с Java?


2-1328363804
whoim
2012-02-04 17:56
2013.03.22
динамический двумерный массив of integer: не могу найти ошибку..


15-1329926834
Unknown user
2012-02-22 20:07
2013.03.22
Balloon hint





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский