Форум: "Система";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизКак можно заставить систему не запускать другие приложения... Найти похожие ветки
← →
TankMan © (2004-03-25 19:22) [0]Вообще у меня стоит задача, чтобы в системе запускался только мой Shell, а если вдруг кто-то исправит system.ini, и поставит на загрузку Explorer, нужно чтобы запускалась программа через реестр RunServices, и перезагружала компьютер с исправлением нужных файлов.... так вот проблема состоит в том, что программа то запускается, но она не успевает ничего сделать, если сразу же при загрузке нажимать crl+alt+del и снимать все задачи кроме explorer-а как только они запускаются :(... т.е. программа при загрузке, во первый первым делом отключает функциональные клавиши, потом, прячет себя из taskmanager-а, но почему-то она этого не делает, скорее всего не успевает, хотя в месте с ней, в RunServices программ то почти и нет :(... что можно сделать чтобы ее нельзя было снять?
Вобщем-то есть проблама еще такая, что когда выбираешь эту программу в списке и нажимаешь кнопку чтобы ее завершить, винда сразу выдает запрос на ее "убийство" ТерминейтПроцессом, а не просто Close-ом, насколько я понимаю - это происходит из-за того, что нет окна, которому можно послать это сообщение, (я написал ее без окна и она просто рисует на экране сообщения), и поэтому она сразу же хочет убить его быстро, т.е. мне нужно каким-то образом обрабатывать сообщения, но как? у меня же нет окна :(
← →
Cobalt © (2004-03-25 19:30) [1]Чтобы тебя не убили через crl+alt+del, надо его запретить (см. FAQ)
← →
Prov © (2004-03-25 21:32) [2]чтобы не изменили System.ini, скрой диски в проводнике, хотя это не спасает тебя при использовании таких файловых менеджеров, как Far, или WindowsCommander ^))
← →
TankMan © (2004-03-26 01:03) [3]... нет вы меня не поняли, программа и так это делает - вобщем ход действий программы - запуск проги ->выставление высокого приоритета->запрещение С+А+Д-> скрытие проги из TaskMng->отрисовка сообщения->выставление в реестре и system.ini нужных данных->перезагрузка.
Но проблема в том, что при старте Ехплорера, быстро нажимая К+А+Д, можно увидеть программу в списке и убить ее легко :(... и я все не знаю, как сделать так тчобы ее нельзя было убить или ее небыло видно :(
← →
Cobalt © (2004-03-26 08:57) [4]Запрещай С+А+Д в самом начале проги, т.е. в *.dpr
Убить её нельзя. А скрыть в Win9* можно - тоже в FAQ
← →
bartram © (2004-03-26 09:45) [5]Вообще есть специадьное сообщение которое Windows посылает при изменении System.ini всем приложениям, это сообщение можно отловить ну а дальше дело техники !!
← →
TankMan © (2004-03-26 17:30) [6]Я опять не все рассказал,т.к. у меня какраз нет главного окна и поэтому у меня и есть весь код в dpr... больше впринципето и не где получается :)...(во всяком случае без каких-либо заморочек), я и запрещаю, а еще есть проверка на наличие собственного процесса в списке процессов для того чтобы всегда держать запущенными еще 2 процесса этой же программы... но этого она ничего не успевает сделать :(((
← →
Dennis S © (2004-03-26 18:05) [7]Если уж нужно, чтобы прогу нельзя было убить вооще в 99,9% случаев сделай легко: на закрытии программы сделай запуск копии этой же программы (т.е. самой себя).
← →
Плохиш (2004-03-26 18:14) [8]
> Dennis S © (26.03.04 18:05) [7]
> Если уж нужно, чтобы прогу нельзя было убить вооще в 99,9%
> случаев сделай легко: на закрытии программы сделай запуск
> копии этой же программы (т.е. самой себя).
Кто-нибуть удосуживается сообщить какой-либо программе, что он её сейчас грохнет? ;-)
← →
TankMan © (2004-03-27 14:59) [9]Ну вы опять не поняли, дело в том, что закрытие программы можно обработать только лишь в том случае, когда окну проги приходит сообщение WM_CLOSE или что-то в этом духе, а тут нечему посылать такое приложение, поэтому-то он и сразу же предлагает грохнуть программу процедурой TerminateProcess, а эта процедура никого вообще не спрашивает (кроме пользователя),"убивать" приложение или нет... возможно можно как-то сделать так, чтобы приложение не отображалось в списке приложение по умолчанию, т.е. сразу же после запуска?
← →
Alexis © (2004-03-28 17:10) [10]Если я тебя правильно понял, то проблема лишь в том, что до того, как твоя программа успеет выполнить все действия в системе, ее можно успеть убить через Alt-Ctrl-Del.Может первым делом твоя программа должна отключать клаву и мышь, затем все остальное и наконец включать клаву и мышь снова.Тогда особо проворные юзера не нажмут Alt-Ctrl-Del со всеми вытекающими отсюда последствиями :)
← →
TankMan © (2004-03-29 19:25) [11]Да ты полностью прав, но так дело в том, что когда программа выполняет хотябы 2-ю строчку своего кода, то TaskManager уже нельзя открыть... CTRl+Alt+Del блокируется... но она не успевает :((( вот я и думаю что можно сделать...
А вообще system.ini в этом случае меняется только из Доса...
Так что ничего тут не поделаешь - если изменили так уж изменили :(
← →
Hkr © (2004-03-30 12:49) [12]
> но так дело в том, что когда программа
> выполняет хотябы 2-ю строчку своего кода, то TaskManager
> уже нельзя открыть... CTRl+Alt+Del блокируется... но она
> не успевает :((( вот я и думаю что можно сделать...
А если первой строчкой поставить блокировку CTRl+Alt+Del или скрытее проги из CTRl+Alt+Del?
← →
unya (2004-03-31 00:36) [13]Сначала убей Explorer ;]
← →
atruhin © (2004-03-31 08:22) [14]TankMan - правильно пишет в 98 винде можно убить любой процесс до того как он получит управление. Это известная фишка при написании всевозможных программ ограничения доступа. Полное решение только одно: драйвер загружаемый при запуске. Компромисное загрузка скрытой dll. Если интересует конкретика пиши могу скинуть пример автозагрузки в процесс explorera/
← →
BiN © (2004-03-31 09:43) [15]Проблема решается 2-мя способами:
1. Пересесть на w2k
и если не можешь 1, то
2. Оформляй свой shell в виде длл и иже с ним.
← →
BiN © (2004-03-31 09:46) [16]...вдогонку, только длл не в процессе explorer-а, а старого доброго mprexe
← →
TankMan © (2004-03-31 17:09) [17]atruhin... вооот я тоже подумывал о dll-ке, но не знал как и не знаю до сих пор... скинь плз какой нибудь примерчик по этому поводу...TankMan@newmail.ru
← →
имя (2004-04-03 15:44) [18]Удалено модератором
← →
Anatoly Podgoretsky © (2004-04-03 15:59) [19]Для того чтобы убрать записи из system.ini и RunServices, совсем не требуется запускать Виндоус, это делается из ДОС, сомневаюсь что этому как то сильно воспрепятствуешь. Ососбенно при загрузки с дискеты.
← →
TankMan © (2004-04-03 16:48) [20]Ну как сказать, изменить system.ini может множество людей работавших в досе, но вот убирать из доса параметр в Runservices? - для этого не каждый сунется, да и никто не будет знать, где (откуда именно) именно запускается моя прожка... вот я тут подумал что всетаки загрузка dll-ки будет выходом из этой истуации, а уж если ее назвать по подобию какой либо системной библиотеки, так это вообще не каждый рискнет убрать ее из загрузки... вобщем вариантов много, но вот сейчас у меня стоит проблема в том, что при загрузке программа не успевает и даже самой первой строки кода исполнить... конечно есть вариант, чтобы прям на EntryPoint поставить прыжок на кусок кода, который будет блокировать К+А+Д, но у меня проблема с программированием в азме :((... и такой код я сам написать не смогу... а вот вставить смогу :)... может кто напишет такой вот кусочек кода?...
Это конечно не универсально... ведь ХР на это вообще никак не отреагирует... но для ХР я буду писать свой хранитель... это совсем другой (по мне так) разговор...
← →
Anatoly Podgoretsky © (2004-04-03 16:57) [21]TankMan © (03.04.04 16:48) [20]
Много проще, чем ты думаешь, простой reg file, человеку ни чего такого экстраординарного делать не потребуется, просто запустить бат файл, возможно даже из автоэксек.
Ты не тем занимаешься, Win9x не имеет защиты, надо ставить сответствующую ОС, а не дурью маяться.
← →
TankMan © (2004-04-04 05:13) [22]Мне нужна именно универсальность (относительно Windows) программы, т.е. необходимо обеспечить безопасность в любой ОС... опять же на счет reg-а... откуда человек будет знать, что изменять в реестре, какой ключ, если - вопервых он не один (ключ), во вторих, когда загружается мой shell, человек просто никак не может попасть на диск C, т.е. все проигрыватели и просмоторщики стандартные заменены на мои, все что могло бы запускатся не запускается... потому что shell убивает не опознанные(не разрешенные) приложения... вобщем на винт может попасть только администратор... вот впринципе и все... а в дос... можно отключить Диск A из биоса можно не ставить в очередь загрузки попытку загрузиться с Дискеты... вобщем как я говорил - это уже другая тема, но вот если всетаки, каким либо образом человек (знает универсальные пароли на биос и один из них подошел ,) загрузился с дискеты изменил system.ini, но он же не знает что менять в реестре(?), запускает explorer, и тут же видит рисованное окно моего кипера, который тут же компьютер и перезагружает...выставляя все настройки наместо и переписывя свои тела куда нужно... вобщем я думаю что всетаки как-то убедил, что у меня лишь проблема в том, чтобы человек не мог (не успел) ничего сделать до того, как программа отключит C+A+D или не спрячет себя из TaskManager-а... вот...
← →
DVM © (2004-04-04 14:28) [23]
> Но проблема в том, что при старте Ехплорера, быстро нажимая
> К+А+Д, можно увидеть программу в списке и убить ее легко
> :(... и я все не знаю, как сделать так тчобы ее нельзя было
> убить или ее небыло видно :(
в Win9x - никак! Поверь мне шеллами (в том числе и для компьютерных клубов занимаюсь давно).
Точнее есть один способ, но сложный. Написать драйвер, который и будет следить за всем. Его не видно.
← →
DeadMeat © (2004-04-04 15:12) [24]Обзови свою програмку, которая в реестре сидит, каким-нибудь системным именем... Например wmiexe.exe, или mprexe.exe, или уж совсем круто будет смотреться kernel32.exe... После её запуска, если её конечно не убьют (вряд ли кто рискнёт, особенно с последним), закрывай ALT+CTRL+DEL и пускай твой шелл грузиться в полной безопасности...
Я тоже когда-то этим занимался...
← →
Pat © (2004-04-04 16:29) [25][HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun]. Он разрешает запуск только указанных там программ. Создавай там строковые параметры. Например, такие:
"1"="notepad.exe"
"2"="winword.exe"
И не забудь
[...\Explorer] RestrictRun:DWord=1
← →
TankMan © (2004-04-06 20:15) [26]>>DeadMeat
Ну вообще то всем известно, что kernel32 не показывается в обычном списке программ, и единственным приложением обязательным (и которое видно в TaskManager-е) это Explorer... его только и не убивают...
>>Pat
Ну нет.. я думаю это слишком жесткое ограничение...
← →
DeadMeat © (2004-04-08 18:20) [27]Ну тады обзови его Rundll32.exe... Вообщем пофантазируй...
← →
TankMan © (2004-04-08 20:04) [28]:)... у меня вопрос не в том, чтобы как-то обозвать мой процесс проблема в другом принципиально.... темболее я же говорил, что убивают ВСЕ процессы кроме "Explorer"-а...
← →
-=наблюдатель=- © (2004-04-13 15:32) [29]Попробуй стать шеллом на время. Т.е. в первый раз запуститься в качестве онного, а во потом, уже запускать Explorer и иже с ним. Я тут вроде создавал похожую ветку, но видимо её удалили, т.к. в ней начали спрашивать немного не по теме. Да в принципе правильно сделали. Но раз уж в твоём случае убивают всё кроме Explorer-а, то обзови оригинальный Explorer чем-нибудь другим, а свою прогу именно Explorer.exe. При запуске своей проги, в зависимости от обстоятельств запускай или не запускай оригинальный Explorer.
← →
-=наблюдатель=- © (2004-04-13 15:33) [30]А нет, не удалили
http://delphimaster.net/view/7-1078743352/
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.59 MB
Время: 0.047 c