Michael Yuzhakov
2009-01-27 20:10:17 UTC
Джентльмены!
Имеется задача - кильнуть некоторый сервис по его пиду. Пишу следующий код:
//Фрагмент киляющего сервиса.
// hProcess:=OpenProcess(PROCESS_ALL_ACCESS, true, pid); //Так тоже не
работает.
hProcess:=OpenProcess(PROCESS_TERMINATE, true, pid);
if hProcess<>0 then
begin
//debug
WriteLog('kill:terminate'); - досюда не доходит, т.е. handle
процесса не открыт.
TerminateProcess(hProcess,0);
CloseHandle(hProcess);
end;
Данный код работает, когда в качестве киляемого процесса подсовываю
какую-либо прогу (обычную, не сервис). В случае, когда киляемый процесс есть
сервис, киляющий сервис его кильнуть не может - возвращается нулевой handle
процесса. Естественно, оба сервиса - и киляющий, и киляемый - запущены под
одним и тем же юзером, имеющим административные права. Под тем же юзером я
пробую руками кильнуть киляемый процесс таск манагером - киляется без проблем.
Что по этому поводу думает всезнающий All?
Варианты "net stop" или запуск киляющего процесса под localsystem не
подходят по некоторым причинам космического порядка.
С большим приветом, Южаков Михаил.
_________________________________________________________
е-мыло: yuzhakov<собака>etel.ru
Имеется задача - кильнуть некоторый сервис по его пиду. Пишу следующий код:
//Фрагмент киляющего сервиса.
// hProcess:=OpenProcess(PROCESS_ALL_ACCESS, true, pid); //Так тоже не
работает.
hProcess:=OpenProcess(PROCESS_TERMINATE, true, pid);
if hProcess<>0 then
begin
//debug
WriteLog('kill:terminate'); - досюда не доходит, т.е. handle
процесса не открыт.
TerminateProcess(hProcess,0);
CloseHandle(hProcess);
end;
Данный код работает, когда в качестве киляемого процесса подсовываю
какую-либо прогу (обычную, не сервис). В случае, когда киляемый процесс есть
сервис, киляющий сервис его кильнуть не может - возвращается нулевой handle
процесса. Естественно, оба сервиса - и киляющий, и киляемый - запущены под
одним и тем же юзером, имеющим административные права. Под тем же юзером я
пробую руками кильнуть киляемый процесс таск манагером - киляется без проблем.
Что по этому поводу думает всезнающий All?
Варианты "net stop" или запуск киляющего процесса под localsystem не
подходят по некоторым причинам космического порядка.
С большим приветом, Южаков Михаил.
_________________________________________________________
е-мыло: yuzhakov<собака>etel.ru