![]() |
|
#1
|
|||
|
|||
![]() Здравствуйте, уважаемые.
Суть вопроса в следующем: Пишу простенький диспетчер задач, с функцией вывода информации о процессе(производитель экзешника, путь к файлу) и с функцией убийства процесса. Думаю, многие из вас сталкивались с ситуацией, когда вредоносными программами(Вирусами) отключался регэдит и диспетчер задач. Есть PID процесса, есть функция, убивающая процесс. Процесс можно убить почти любой.(не получалось убить только avp.exe - каспер) Но, это при запуске программы из-под компилятора.(кнопка F9 - Run) Если скомпилировать, и запустить - то некоторые процессы убить не получается. Подозреваю, что отказано в доступе. error code: 6 Если запускать из компилятора - то функцией возвращается 0 код и процесс убит. Антивирус не при чем. Функция: Код:
Вопросы: 1) Коим образом можно извлечь информацию о производителе?(майкрософт, адоб, и.т.п.) // Это не столь важно 2) Коим образом можно получить необходимый доступ к процессу, не зависимо от компилятора? |
#2
|
||||
|
||||
![]() Операционка?
Подозреваю, что Win7. Delphi, скорее всего, от админа, а значит, и твоя прога "от имени администратора". А если не из Delphi запускаешь, то от "юзера" запускается, и получаешь свой заслуженный "error code 6". Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
||||
|
||||
![]() А может не нужен велосипед, а использовать Process Explorer
|
#4
|
|||
|
|||
![]() Нормальное вирьё его тоже заблочит, так что не всегда.
По проблеме: Вероятнее всего именно из-за отсутствия админских прав и не завершается. Тут есть два варианта - где-то видел функцию, проверяющую есть ли права админа у программы, а во-вторых можно подправить манифест и UAC будет сам запрашивать права |
#5
|
||||
|
||||
![]() TheHavoc, если используешь TXPManifest, то удали его и из всех uses удали XPMan.
положи в папку с *.dpr файлик Manifest.res и в *.dpr добавь строчку: Код:
Пишу программы за еду. __________________ |
#6
|
|||
|
|||
![]() Ось Вин ХР, сижу из-под админа
Компилятор Delphi XE Изобретать велосипед не надо, но эта возможность мне необходима. Мне нужно знать, как это работает. С XP Манифестом попробую поэкспериментировать. Последний раз редактировалось TheHavoc, 01.07.2011 в 17:29. |
#7
|
|||
|
|||
![]() Код:
1) Использовать GetFileVersionInfo 2) Получить DebugPrivilege для своего процесса |
#8
|
|||
|
|||
![]() Операция с манифестом и ресурсами не помогла.
|
#9
|
|||
|
|||
![]() Цитата:
|
#10
|
|||
|
|||
![]() На фига вот это вот GetExitCodeProcess(PH, EC);
Просто TerminateProcess(PH, 0); |
#11
|
|||
|
|||
![]() Цитата:
Да, кстати, спасибо вам за код. Работает ![]() Попробовал завершить csrss.exe - ![]() |
#12
|
||||
|
||||
![]() Цитата:
Пишу программы за еду. __________________ |