![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отловить подключение к компьютеру по сети [D5, NT4, Win2k]
sel © (2002-12-19 08:50:00)Здравствуйте, уважаемые мастера.
Сначала проблема: шеф не разрешает использование icq на работе, проверяет по radmin.
В связи с этим у меня такой вопрос:
Как можно отловить подключение к моему компу по радмину и если оно произошло, то найти и закрыть окно icq.
Если можно, напишите подробнее, так как тут, понимаю, всего несколько строк кода. Есть ли различия при использовании 2К и НТ?
Буду очень признателен за ответ, спасибо.
Dr.Dron (2003-01-16 08:54:00) [1]ShowWindow(FindWindow(nil,"Диспетчер задач Windows"),SW_HIDE);
Ето дело по таймеру....
И "Дспетчер задач Windows" в W2K отпадает...
[AsP]-UncoNNecteD (2002-12-21 17:14:00) [2]Не проще ли установит опцию в Р-Админе - Ask User Permission и просто отрубать асю и нажимать yes ?
msts (2002-12-19 16:00:00) [3]>Reindeer Moss Eater
Тогда только свою аську писать - для простых разговоров, без хистори, относительно просто, в инете есть апи с примерами ICQ2002 протокола.
Замаскировать под какой нибудь текстовый редактор - например ворд,
т.е. вызвать ворд как оле объект и в нем писать/читать сообщения - дешево и сердито :)
sel (2002-12-19 15:20:00) [4]ПОлучив хэндл окна от класса окна на своей машине, не удается получить нужный хэндл от такого же окна на другой, хотя ws32 показывает, что класс тот же.
sel (2002-12-19 14:28:00) [5]В том-то и дело, что не получается узнать в winsight32, а кроме того, вопрос про радмин остается открытым
sel (2002-12-19 14:27:00) [6]В том-то и дело, что не получается узнать в winsight32
Digitman (2002-12-19 13:47:00) [7]а что пробовать-то ? запусти какой-нибудь SPYXX.EXE (MS Visual Studio) или WS32.EXE (Borland Delphi) да посмотри класс и имя гл.окна процесса ICQ.EXE.
То аськино окно, что ты видишь на экране, вовсе не обязательно д.б. гл.окном приложения
sel (2002-12-19 13:41:00) [8]Ищу функцией FindWindow , а вот в качестве параметров перепробовал много разного, но не могу найти нужных.
Digitman (2002-12-19 13:25:00) [9]
> sel (19.12.02 12:27)
> Закрыть нужно главное окно, ест-но.
> Как процесс в 2К скрыть? Не знаю.
> И что это даст, само приложение не будет видно на панели
> задач, например? Как его потом искать.
Ну так как же ты ищешь гл.окно ? Поясни.
Как процесс в 2К скрыть ? Как минимум - перехватить snapshot
-вызовы и NtQuerySystemInformation() со стороны всех существующих и вновь стартующих процессов. Сложно, но - можно и решаемо в принципе.
Как искать ? Ну ты перехватил сист.вызовы и подставил, например, вместо ICQ.EXE какую-нибудь хрень наподобие MSIE8.EXE. В TaskManager"е будешь видеть свой процесс под этим именем
C2H5OH (2002-12-19 13:11:00) [10]а можно в аську через веб-интерфейс лазить http://go.icq.com
sel (2002-12-19 12:27:00) [11]Закрыть нужно главное окно, ест-но.
Как процесс в 2К скрыть? Не знаю.
И что это даст, само приложение не будет видно на панели задач, например? Как его потом искать.
Digitman (2002-12-19 12:06:00) [12]>sel
> получить хэндл окна icq
У клиента ICQ не одно окно. Какое ищешь, по каким признакам ?
> мне нужно закрыть приложение, а не просто скрыть его
А чем тебе сокрытие процесса не нравится ? Какие сомнения ?
sel (2002-12-19 12:00:00) [13]На самом деле интересует принцип работы 2-х вещей:
1) получить хэндл окна icq (у меня не получилось), чтобы его закрыть
2) контролировать подключение к моему компу (конкретно использования программы радмин - когда remote administrator server говорит, что кто-то приконнектился).
2 digitman - мне нужно закрыть приложение, а не просто скрыть его. Хотя процессы смотреть вряд ли кто будет.
Anatoly Podgoretsky (2002-12-19 11:49:00) [14]Шеф просто терпеливый, но я думаю на явные попытки саботаже отреагирует должным образом
Digitman (2002-12-19 11:40:00) [15]>sel
Я так понимаю, что для шефа признак работы ICQ-клиента - это обнаружение с помощью RAdmin"а присутствия в системе на твоей машине среди прочих процессов процесса с именем ICQ.EXE ? Так ?
Reindeer Moss Eater (2002-12-19 11:27:00) [16]Фигня все это.
Sel хочет в рабочее время использовать ICQ.
Но его контролирует шеф с помошью RAdmina.
Sel подумал, что если сумеет определить момент подключения шефа к его машине и закрыть приложение, то наступит счастье, и задача будет решена (в рабочее время использовать ICQ)
Шеф подключился к машине sel"а, программа sel"а погасила icq.
Шеф ничего не увидел. Замечательно.
Но шеф не спешит отключаеться от машины sel"а, и sel не может пользоваться ICQ в рабочее время не рискуя быть пойманным.
Задача не решена.
msts (2002-12-19 11:18:00) [17]чтото в тему
_________________________________________________________________________________________
Q: [API] Как узнать кто висит на моей (или не моей) машине?
A: Эта вещица написана на С++, но может сгодиться
_________________________________________________________________________________________
#define STRICT
#include
#include
#include
#include
void UserEnum()
{
BOOL keepGoing = TRUE ;
DWORD entriesRead, totalEntries ;
USER_INFO_2 * pInfo = NULL ;
DWORD resumeHandle = 0 ; // must be 0 to start with
char nameBuf[ UNLEN + 1 ] ; // constants defined in LMCONS.H
char commentBuf[ MAXCOMMENTSZ + 1 ] ;
WCHAR serverName[ 100 ] ;
lstrcpyW( serverName, L"\\\\PDC" ) ; //L"" ) ;
while ( keepGoing )
{
NET_API_STATUS ret = NetUserEnum(
serverName, //NULL,
2,
0, //FILTER_NORMAL_ACCOUNT,
(LPBYTE *)&pInfo, // Important: ADDRESS of POINTER
sizeof( USER_INFO_2 ) * 100, // requested buffer size; it may not
actually allocate this much
&entriesRead,
&totalEntries,
&resumeHandle ) ;
keepGoing = ( ret == ERROR_MORE_DATA ) ;
if ( ret == 0 || ret == ERROR_MORE_DATA )
{
DWORD i ;
for ( i = 0 ; i < entriesRead ; i++ )
{
// Note that strings in the INFO structures
// will ALWAYS be Unicode, regardless of
// your settings! Even though they"re declared
// as LPTSTR, they"re always LPWSTR.
// I"m compiling for non-Unicode, so I
// convert them to ANSI strings...
// Check for NULL pointers in the INFO structure
LPWSTR pName = (LPWSTR)pInfo[ i ].usri2_name ;
LPWSTR pComm = (LPWSTR)pInfo[ i ].usri2_comment ;
if ( pName == NULL )
{
lstrcpy( nameBuf, "(no name!)" ) ;
}
else if ( lstrlenW( pName ) == 0 )
{
lstrcpy( nameBuf, "(empty name!)" ) ;
}
else
{
WideCharToMultiByte( CP_ACP, 0,
pName, -1,
nameBuf, UNLEN,
NULL, NULL ) ;
}
if ( pComm == NULL )
{
lstrcpy( commentBuf, "(no comment!)" ) ;
}
else if ( lstrlenW( pComm ) == 0 )
{
lstrcpy( commentBuf, "(empty comment!)" ) ;
}
else
{
WideCharToMultiByte( CP_ACP, 0,
pComm, -1,
commentBuf, MAXCOMMENTSZ,
NULL, NULL ) ;
}
cout
sel (2002-12-19 10:24:00) [18]понятно, внятного ответа не добиться, спасибо
Игорь Шевченко (2002-12-19 09:45:00) [19]А шеф потом по попе ремнем больно настучит.
Не надо страдать ерундой, плз.
sel (2002-12-19 09:33:00) [20]Тем более, это нужно не мне