Длинные
руки
админа
Сергей ПАРИЖ СКИЙ
Сейчас мы напишем программу, при помощи которой можно будет проводить удаленное администрирование
компьютеров. Они, в свою очередь, могут находиться как в локальной сети, так и в Интернете. Писать
эту программу мы будем на йеірбі. На самом деле нам придется написать две программы. Одна получит
название «сервер» и будет постоянно, незаметно для пользователя, ожидать команды от второй нашей
программы, которая называется «клиентом». Все нужные нам компоненты находятся в стандартном
наборе, так что все, что вам нужно сделать, это открыть Оеірґіі и приступить к написанию.
Клиент
Э
та програм м а долж на предоставлять удобный интерфейс
для администрирования. Я не соб и р аю сь устраивать п а -
рад функций администрирования. Цель статьи — пока-
зать способ написания такого рода программ , а что ка-
сается добавления функций и разны х примочек, то это уже
ваш е дело. Для примера, в програм м е будет три функции:
пе-
резагрузка, выключение и включение экрана.
Я выбрал их для
лаконичности — каждая из них записывается в одну строчку.
Н а рисунке 1 — готовая ф орм а программы. С а -
мый главный компонент программы —
C lie n ts o c k -
e t.
С его помощ ью мы сможем отсылать команды
на определенный порт другого компьютера. Возь-
мите этот компонент из вкладки Internet. В свойст-
вах измените значение
P o rt
на
1212.
И з вкладки
Standard возьмите поле для ввода
e d i t l
— оно бу-
дет служить для ввода IP-адреса. Также бросьте три
компонента
R a d ioB utton
и измените значение
te x t
на соответствующ ий функции текст. С низу распо-
ложите кнопку, при нажатии на которую будет вы-
полняться выбранное действие. Создайте событие
O n C lick
для кнопки и напишите такой код:
C lie n tS o c k e tl.A d d re s s : = e d it1 .T e x t ;
C lie n tS o c k e tl.A c tiv e := T ru e ;
//устанавливаем соединение
П р и наж атии н а кнопку происходит попытка соединиться
с сервер ом через порт 1212.
В событии
OnConnect
компонента
C lie n ts o c k e t
(оно будет
происходить при успеш ном соединении) напишите такой код:
i f R a d io B u tto n l.C hecked th e n C lie n tS o c k e tl.S o c k e t.
S e n d T e xt( ' r e b o o t' ) ;
i f R a d io B u tto n 2 -C h e cke d th e n C lie n tS o c k e tl.S o c k e t.
S e n d T e xt( ' v k l ' ) ;
i f R a d io B u tto n 3 -C h e cke d th e n C lie n tS o c k e tl.S o c k e t.
S e n d T e xt( ' v y k l' ) ;
C lie n tS o c k e tl. A c tiv e : = fa ls e ;
П р и успеш ном соединении сервер у отправляется опреде-
ленная ком анда. П осл е чего соединение разрывается.
Чтобы получать уведомления о б ош ибке, при установке
соединения в событии
O n E rro r
напишите:
ShowMessage ( ' Произошла ошибка ! ' ) ;
|127.0.0.1
Г
П
Включить мониг
0
Выключить
ор
г*
...
Doit!
________ ! !
Рис.1
Теперь, когда пользовательская програм м а готова, мы на-
пишем программу-сервер, которая будет запускаться на управ-
ляемом компьютере, раб отая незаметно для пользователя. Го-
товую ф орм у программы вы можете увидеть на рисунке 2. Все
что нужно сделать, это уменьшить разм ер формы и разместить
на ней компонент
S e rve rS o cke t
из вклад
ки Internet. В свойствах этого компонента
следует изменить значение
P o rt
на
1212.
Теперь сделаем ф орм у невидимой, что-
бы о н а не м озолила глаза пользователю.
Д ва р а за щ елкните п о собы тию
O n P a in t
главной ф ормы и напиш ите
fo rm l.h id e .
В событии формы
O nC reate
должен быть
следующ ий код:
ник Рис.2
v a r
re g : t r e g is t r y ;
p a th : s t r in g ;
b e g in
p a th : = A p p lic a tio n . EXEname ;
/ /полный
п у ть к нашей
программе
r e g : = t r e g is t r y . c re a te ;
r e g . r o o tk e y : =HKEY_CURRENT_USER;
i f re g .o p e n k e y ('\S o ftw a re \M ic ro s o ft\W in d o w s \C u rre n t
V e rs io n X R u n ',tru e ) th e n b e g in
___
r e g . w r it e S t r in g ( 'S e r v e r ', p a th ) ;
r e g .c lo s e k e y ;
r e g .fr e e ;
end;
Э т о обеспечит наш ей програм м е а в то за -
грузку. Н е забудьте в разделе u s e s дописать
модуль
R e g is try
для работы с реестром.
Теперь уберем наш у програм м у из пане-
ли задач. Для этого выберите пункт View Source
из м еню Project. П ер ед вами появится исход-
ный текст сам ого проекта. Вытрите все, что
там написано, и напиш ите следующий код:
pro g ra m P r o je c t 1;
uses
w in d o w s, Form s,
U n it l in 'U n it l. p a s ' {F o rm l};
{ $ R *.re s >
v a r
E s ty le : in te g e r ;
b e g in
A p p lic a t io n . I n it ia liz e ;
E s ty le : =GetW indowLong(a p p lic a t io n . H a n d le ,
G W L_EX style) ;
S e tW in d o w L o n g (A p p lic a tio n .H a n d le , G W L_EX style, Es-
t y le o r WS_EX_TOOLWINDOW) ;
A p p lic a tio n .C re a te F o rm (T F o rm l, F o rm l);
A p p lic a tio n .Run;
end.
П ерейдите в редактор модуля (Unitl.pas) и в процедуре о п -
C re a te
допиш ите в начале:
ShowWindow(H a n d le , SW_HIDE) ;
S h o w W in d o w (A p p lic a tio n .H a n d le , SW_HIDE);
П осл е этого в а ш а програм м а не будет выдавать свое при-
сутствие на панели задач.
С ервер сразу должен быть готов к обработке команд, так что
в событии
OnCreate
следует дописать строку активации сервера:
S e rv e rS o c k e t1 . A c tiv e : = tru e ;
Чтобы не получать ош и бку при заверш ении раб оты сер-
вер а во время связи с клиентом, нужно
перед завер ш ен и ем р аб оты р азр ы вать
связь. Для этого в событии ф ормы O nDe-
s t r o y следует написать:
S e rv e rS o c k e tl.A c tiv e : = fa ls e ;
Теперь заполним главное событие —
при ем
ком анд
о т
клиента.
С о б ы ти е
О кончание на стр. 4
1
предыдущая страница 39 Мой Компьютер 2004 38 читать онлайн следующая страница 41 Мой Компьютер 2004 38 читать онлайн Домой Выключить/включить текст