Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как закрыть приложение на удаленном компьютере? [D5, D6, D7]


novice ©   (2006-05-17 10:17:00) 

Известен заголовок и имя .ехе, с учетом того, что там вин98?


novice   (2006-05-17 15:50:00) [1]

Думал над этим - но задание шедулера никуда не спрятать. Вобщем, если применить WMI не получится, то придется скрывать программу в диспетчере, хотя это все-таки не совсем то и при наличии соображалки у юзера он эту защиту обойдет. Основная проблема на тек. момент - не нахожу SDK для винтукея и выше.


Elen   (2006-05-17 15:41:00) [2]

Значит тебе надо научиться скрывать свою прогу хотя бы в Диспетчере Задач например сплайсингом функций API.
В инете есть много статей на эту тему


novice   (2006-05-17 15:34:00) [3]


> Далее CreateNoKillProcess('notepad.exe'); - и если юзер
> не админ он его не закроет никак

Повторюсь, но у меня проблема с Вин98, где разделяемых прав нет. Это первое. Второе, даже в этом случае мою программу надо  запускать на удаленном компьютере, я это делаю шедулером при входе в винду (в автозапуске почему-то не получается, но дело не в этом), а значит "особливо продвинутый" может просто отключить задание шедулера или выбросить из автозагрузки - свобода в Вин98 ничем не ограничена.


Elen   (2006-05-17 15:23:00) [4]


function CreateNoKillProcess;
const
ACL_REVISION = 2;

begin
 result:=false;
if not InitializeAcl(ACL,SizeOf(_ACL),ACL_REVISION)
 then; //ShowMessage('InitializeAcl'+#13#10+SysErrorMessage(GetLastError));
if not IsValidAcl(ACL) then exit;
if not InitializeSecurityDescriptor(@SD,SECURITY_DESCRIPTOR_REVISION)
 then ;//ShowMessage('InitializeSecurityDescriptor'+#13#10+SysErrorMessage(GetLastError));
if not SetSecurityDescriptorDacl(@SD,true,@ACl,true)
 then ;//ShowMessage('SetSecurityDescriptorDacl'+#13#10+SysErrorMessage(GetLastError));
if not IsValidSecurityDescriptor(@SD) then exit;
ZeroMemory(@sa,SizeOf(sa));
sa.nLength:=SizeOf(sa);
sa.bInheritHandle:=false;
// Nnueea ia iao aane?eioi? aaciianiinoe
sa.lpSecurityDescriptor:=@SD;

// Io e iaeiiao, nicaaai iiaue i?ioann n iiauie ao?eaooaie aaciianiinoe
ZeroMemory(@si,SizeOf(si));
si.cb:=SizeOf(si);
if not CreateProcess(nil,EXEProg,@sa,@sa,false,0,nil,nil,si,pinfo)
 then ;//ShowMessage('CreateProcess'+#13#10+SysErrorMessage(GetLastError));
result:=true

end;


Далее CreateNoKillProcess('notepad.exe'); - и если юзер не админ он его не закроет никак


novice   (2006-05-17 15:11:00) [5]

Вобщем-то, именно как клиентская часть - нет. Я нарисовал программку, которая с некоторым интервалом запрашивает список запущенных процессов и, если находит в них процесс, принадлежащий одному из заранее прописанных ексешников, убивает его. На NT'ях все здорово, т.к. юзеры мой процесс выгрузить не могут, а вот в 98-х особливо продвинутые просто убивают его - и все.


Alien1769   (2006-05-17 14:33:00) [6]


> Напомню - вин98, т.е., не дать пользователю отрубить клиента
> я не смогу, а необходимо, чтобы независимо от желаний/возможностей
> пользователя я мог у него завершить приложение, причем с
> другой машины.


А приложение на клиенте тобой написано ?


novice   (2006-05-17 13:47:00) [7]


> написать что-то типа небольшого сервера, слушающего определенный
> порт. с функциями  получение списка запущенных приложений
> и завершения процесса по названию...

Но в этом случае и клиента размещать на той машинке придется, что меня не совсем радует. Напомню - вин98, т.е., не дать пользователю отрубить клиента я не смогу, а необходимо, чтобы независимо от желаний/возможностей пользователя я мог у него завершить приложение, причем с другой машины.


MetalFan   (2006-05-17 13:28:00) [8]


> Мне лично - ни к чему. Я лишь говорю о том, что он мне известен
> - это на случай поиска по заголовкам окон

понятно. мы про разные вещи говорим)
заголовок окна/приложения и заголовок exe...

написать что-то типа небольшого сервера, слушающего определенный порт. с функциями  получение списка запущенных приложений и завершения процесса по названию...


MetalFan   (2006-05-17 13:27:00) [9]


> Мне лично - ни к чему. Я лишь говорю о том, что он мне известен
> - это на случай поиска по заголовкам окон

понятно. мы про разные вещи говорим)
заголовок окна/приложения и заголовок exe...

написать что-то типа небольшого сервера, слушающего определенный порт. с функциями  получение списка запущенных приложений и завершения процесса по названию...


novice   (2006-05-17 13:20:00) [10]


> а зачем вам заголовок exe файла?!

Мне лично - ни к чему. Я лишь говорю о том, что он мне известен - это на случай поиска по заголовкам окон.


MetalFan   (2006-05-17 13:17:00) [11]

а зачем вам заголовок exe файла?!


novice   (2006-05-17 13:17:00) [12]

Они, конечно, работают, вот только SDK там для NT4.


balepa   (2006-05-17 13:12:00) [13]


> novice   (17.05.06 12:21) [2]
> Сердцем чую :), что WMI мне поможет, только вот SDK для
> w2k и выше не найду.

А у Microsoft сайты не работают ?


novice   (2006-05-17 12:21:00) [14]

Сердцем чую :), что WMI мне поможет, только вот SDK для w2k и выше не найду.


Elen   (2006-05-17 10:21:00) [15]

Если этот exe не служба, помоему то никак
В крайнем случае тебе придется писать свою программу которая бы работала наподобие Remote Administrator


Наверх

Титульная страница Поиск, карта сайта Написать письмо