![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
EuGenius_Krivbass |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 29.1.2007 Где: Кривбасс, Днепр Украина Репутация: нет Всего: нет |
У меня есть прога, убийство которой я хочу предотвратить, т.е. чтобы прогу никто не мог закрыть кроме нее самой.
Диспетчер задач тоже не должен уметь завершать процесс проги. Благодарю за помощь. |
|||
|
||||
merge |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 20.3.2007 Репутация: нет Всего: 1 |
только написанием драйвера. иначе - никак.
|
|||
|
||||
EuGenius_Krivbass |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 29.1.2007 Где: Кривбасс, Днепр Украина Репутация: нет Всего: нет |
Знать бы как это написать....
|
|||
|
||||
farad |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 1.11.2007 Репутация: нет Всего: 6 |
||||
|
||||
Ch0bits |
|
|||
![]() Python Dev. ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: нет Всего: 62 |
Можно запускать два экземпляра программы, чтобы они отслеживали состояние друг друга и при необходимости перезапускались.
В висте можно использовать Application Recovery and Restart API. |
|||
|
||||
merge |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 20.3.2007 Репутация: нет Всего: 1 |
это глупость. процессы замораживаются и киляются. Реализацию на приемлемом уровне можно сделать с помощью драйвера. с вопросами в гугл. Это сообщение отредактировал(а) merge - 15.1.2008, 17:59 |
|||
|
||||
Legolas |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 14.2.2007 Репутация: нет Всего: 5 |
можно попробовать приклеить свой процесс к системному.
|
|||
|
||||
farad |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 199 Регистрация: 1.11.2007 Репутация: нет Всего: 6 |
||||
|
||||
Ch0bits |
|
|||
![]() Python Dev. ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: нет Всего: 62 |
Это глупости. Все зависит от реализации. У хорошего программиста не будет ни deadlock, ни livelock. К слову. Убийства через диспетчер задач можно избежать, если назвать исполняемый файл именем критического процесса, например: lsass.exe, services.exe, csrss.exe и т.п. Это сообщение отредактировал(а) Ch0bits - 15.1.2008, 18:19 |
|||
|
||||
merge |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 20.3.2007 Репутация: нет Всего: 1 |
можете привести пример программы такой? Которая создает два экземпляра контролируют друг друга. При этом не киляются. Про системное имя файла это тоже так себе "защита". Стороннему процессу пофиг какое имя файла. Я выкладываю пример программы, которая защищается драйвером от открытия с флагом PROCESS_TERMINATE. Но и это не панацея. Можно такой процесс убить перемочив все потоки в нем. Посему нужно следить и за этим.
Тут все зависит - какую сложность нужно автору. может ему хватит двух процессов. Присоединённый файл ( Кол-во скачиваний: 27 ) ![]() |
|||
|
||||
EnergoHokum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: 3 Всего: 6 |
Насколько я помню (поправьте, если что), при попытке закрытия программы операционка сначала пытается сделать это "вежливо", посылкой сообщений, если приложение на них не реагирует -- тогда разговор становится "жёстче". Как вариант, при первой-же "вежливой просьбе" процесс создаёт свою копию, скидывает туда данные, которые нужно сохранить для работы, и "умирает". Как такой вариант?
|
|||
|
||||
BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 4 Всего: 10 |
По умолчанию - да. Но можно легко настроить так, что бы разговор был "жёстким" сразу. -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Создаёшь процесс, запускаешь, из него подгружаешь в адресное пространство svchost.exe свою dll, которая при убийстве процесса перегружает его. Если убить целиком svchost.exe - система умрёт. Придётся выгружать dll либо по-хорошему(посылкой DLL_PROCESS_DETACH, мы ессно это сообщение поймаем и не согласимся выгружаться
![]() Это лишь малая часть методов для режима пользователя(т.е. без драйвера). Суть в том, что на каждое действие находится своё противодействие. Тут всё зависит от ищущего ![]() -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |