Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.03.03;
Скачать: [xml.tar.bz2];

Вниз

Отловить подключение к компьютеру по сети   Найти похожие ветки 

 
sel   (2002-12-19 08:50) [0]

Здравствуйте, уважаемые мастера.
Сначала проблема: шеф не разрешает использование icq на работе, проверяет по radmin.
В связи с этим у меня такой вопрос:
Как можно отловить подключение к моему компу по радмину и если оно произошло, то найти и закрыть окно icq.
Если можно, напишите подробнее, так как тут, понимаю, всего несколько строк кода. Есть ли различия при использовании 2К и НТ?
Буду очень признателен за ответ, спасибо.


 
Reindeer Moss Eater   (2002-12-19 09:11) [1]

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


 
sel   (2002-12-19 09:21) [2]

И все же, хотелось бы услышать ответ


 
sel   (2002-12-19 09:33) [3]

Тем более, это нужно не мне


 
Игорь Шевченко   (2002-12-19 09:45) [4]

А шеф потом по попе ремнем больно настучит.
Не надо страдать ерундой, плз.


 
sel   (2002-12-19 10:24) [5]

понятно, внятного ответа не добиться, спасибо


 
msts   (2002-12-19 11:18) [6]

чтото в тему
_________________________________________________________________________________________
Q: [API] Как узнать кто висит на моей (или не моей) машине?
A: Эта вещица написана на С++, но может сгодиться
_________________________________________________________________________________________


#define STRICT
#include <windows.h>
#include <lm.h>
#include <iostream.h>
#include <tchar.h>

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 << nameBuf << ": " << commentBuf << endl ;
}
}
else
{
cout << "NetUserEnum error " << ret << endl ;
}

if ( pInfo )
{
NetApiBufferFree( pInfo ) ;
pInfo = NULL ;
}
}
}


 
Reindeer Moss Eater   (2002-12-19 11:27) [7]

Фигня все это.

Sel хочет в рабочее время использовать ICQ.
Но его контролирует шеф с помошью RAdmina.
Sel подумал, что если сумеет определить момент подключения шефа к его машине и закрыть приложение, то наступит счастье, и задача будет решена (в рабочее время использовать ICQ)
Шеф подключился к машине sel"а, программа sel"а погасила icq.
Шеф ничего не увидел. Замечательно.
Но шеф не спешит отключаеться от машины sel"а, и sel не может пользоваться ICQ в рабочее время не рискуя быть пойманным.
Задача не решена.


 
Digitman   (2002-12-19 11:40) [8]

>sel
Я так понимаю, что для шефа признак работы ICQ-клиента - это обнаружение с помощью RAdmin"а присутствия в системе на твоей машине среди прочих процессов процесса с именем ICQ.EXE ? Так ?


 
Anatoly Podgoretsky   (2002-12-19 11:49) [9]

Шеф просто терпеливый, но я думаю на явные попытки саботаже отреагирует должным образом


 
sel   (2002-12-19 12:00) [10]

На самом деле интересует принцип работы 2-х вещей:
1) получить хэндл окна icq (у меня не получилось), чтобы его закрыть
2) контролировать подключение к моему компу (конкретно использования программы радмин - когда remote administrator server говорит, что кто-то приконнектился).
2 digitman - мне нужно закрыть приложение, а не просто скрыть его. Хотя процессы смотреть вряд ли кто будет.


 
Digitman   (2002-12-19 12:06) [11]

>sel


> получить хэндл окна icq


У клиента ICQ не одно окно. Какое ищешь, по каким признакам ?


> мне нужно закрыть приложение, а не просто скрыть его


А чем тебе сокрытие процесса не нравится ? Какие сомнения ?


 
sel   (2002-12-19 12:27) [12]

Закрыть нужно главное окно, ест-но.
Как процесс в 2К скрыть? Не знаю.
И что это даст, само приложение не будет видно на панели задач, например? Как его потом искать.


 
C2H5OH   (2002-12-19 13:11) [13]

а можно в аську через веб-интерфейс лазить http://go.icq.com


 
Digitman   (2002-12-19 13:25) [14]


> sel (19.12.02 12:27)
> Закрыть нужно главное окно, ест-но.
> Как процесс в 2К скрыть? Не знаю.
> И что это даст, само приложение не будет видно на панели
> задач, например? Как его потом искать.


Ну так как же ты ищешь гл.окно ? Поясни.

Как процесс в 2К скрыть ? Как минимум - перехватить snapshot
-вызовы и NtQuerySystemInformation() со стороны всех существующих и вновь стартующих процессов. Сложно, но - можно и решаемо в принципе.

Как искать ? Ну ты перехватил сист.вызовы и подставил, например, вместо ICQ.EXE какую-нибудь хрень наподобие MSIE8.EXE. В TaskManager"е будешь видеть свой процесс под этим именем


 
sel   (2002-12-19 13:41) [15]

Ищу функцией FindWindow , а вот в качестве параметров перепробовал много разного, но не могу найти нужных.


 
Digitman   (2002-12-19 13:47) [16]

а что пробовать-то ? запусти какой-нибудь SPYXX.EXE (MS Visual Studio) или WS32.EXE (Borland Delphi) да посмотри класс и имя гл.окна процесса ICQ.EXE.
То аськино окно, что ты видишь на экране, вовсе не обязательно д.б. гл.окном приложения


 
sel   (2002-12-19 14:27) [17]

В том-то и дело, что не получается узнать в winsight32


 
sel   (2002-12-19 14:28) [18]

В том-то и дело, что не получается узнать в winsight32, а кроме того, вопрос про радмин остается открытым


 
sel   (2002-12-19 15:20) [19]

ПОлучив хэндл окна от класса окна на своей машине, не удается получить нужный хэндл от такого же окна на другой, хотя ws32 показывает, что класс тот же.


 
msts   (2002-12-19 16:00) [20]

>Reindeer Moss Eater
Тогда только свою аську писать - для простых разговоров, без хистори, относительно просто, в инете есть апи с примерами ICQ2002 протокола.
Замаскировать под какой нибудь текстовый редактор - например ворд,
т.е. вызвать ворд как оле объект и в нем писать/читать сообщения - дешево и сердито :)


 
[AsP]-UncoNNecteD   (2002-12-21 17:14) [21]

Не проще ли установит опцию в Р-Админе - Ask User Permission и просто отрубать асю и нажимать yes ?


 
Dr.Dron   (2003-01-16 08:54) [22]

ShowWindow(FindWindow(nil,"Диспетчер задач Windows"),SW_HIDE);
Ето дело по таймеру....
И "Дспетчер задач Windows" в W2K отпадает...



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.03.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.63 MB
Время: 0.051 c
1-5503
prorok2
2003-02-20 22:14
2003.03.03
Использование TTreeView в run-time


1-5589
Mika
2003-02-19 19:55
2003.03.03
Обработка события


1-5541
polecat79
2003-02-21 13:41
2003.03.03
Проблемма с написанием наследника от TPropertyEditor


1-5505
h@1f-e1f
2003-02-20 16:02
2003.03.03
Как переводить каретку в Richedit/Memo?


6-5696
MARcoDEN
2003-01-12 12:31
2003.03.03
WinInet + проверка новой версии через Инет





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский