Armenian Knowledge Base  

Go Back   Armenian Knowledge Base > Technical sections > Languages, Compilers, Interpreters
Register

Reply
 
LinkBack Thread Tools
Old 04.11.2002, 05:10   #1
Школьник
 
Join Date: 05 2002
Location: Yerevan
Posts: 202
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Post RegisterServiceProcess под NT/2k/XP

Вопрос вот какой. Как известно, для того, чтобы скрыть активный процесс в Win9x достаточно было использовать недокументированную функцию из kernel32 RegisterServiceProcess .

Тогда списке задач Ctrl-Alt-Del этот процесс отсутствовал и убить его было невозможно.

Однако в Вин2К/НТ этой функции нет. По логике вещей там она должна быть в USER32, однако насколько я понял, под НТ скрыть процесс невозможно в принципе. То-ли это ради защиты от всяческих вирусов они так чделали, то-ли еще что-то.

Короче, знает-ли кто-нить способы для решения этой проблемы.

Буду очень признателен.

С уважением, я.
Reply With Quote
Old 04.11.2002, 05:36   #2
Moderator
 
shatver's Avatar
 
Join Date: 07 2002
Location: Yerevan
Age: 46
Posts: 450
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Post

Как говорится Виндовс маст дай...а Юникс рулез...

Kстати встречный вопрос...если под Юникс кильнуть програмку, а в этой програмке память аллокирована (malloc там, alloc)..что с ней происходить, она корректо возврашается или остается висеть мусором?
Reply With Quote
Old 04.11.2002, 14:41   #3
Академик
 
greka's Avatar
 
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Downloads: 0
Uploads: 0
Reputation: 18 | 5
Post

shatver: Ну при чем здесь "Windows must die" ?
лол.

Amph, ты должен создать сервис под НТ.
а под Виндовс эти процессы "невидимы" разве что для юзеров

Code:
 //  Force system to create message queue for this thread
  MSG threadMessage;
  PeekMessage(  & threadMessage,
                NULL,
                0,
                0,
                PM_REMOVE
             );


  ServiceStatus.dwServiceType = SERVICE_WIN32;
  ServiceStatus.dwCurrentState = SERVICE_START_PENDING;
  ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP;
  ServiceStatus.dwWin32ExitCode = 0;
  ServiceStatus.dwServiceSpecificExitCode = 0;
  ServiceStatus.dwCheckPoint = 0;
  ServiceStatus.dwWaitHint = 100000;

  ServiceStatusHandle = RegisterServiceCtrlHandler( "My Nut Sevice",
                                                    ServiceCtrlHandler
                                                  );
  if ( ServiceStatusHandle == (SERVICE_STATUS_HANDLE) 0 )
  {... return; }


  SetServiceStatus( ServiceStatusHandle,
                    & ServiceStatus
                  );
  status = ServiceInitialization( argc,
                                  argv,
                                  & specificError 
                                );
  if ( status != NO_ERROR )
  {... return; }


  ServiceStatus.dwCurrentState = SERVICE_RUNNING;
  ServiceStatus.dwCheckPoint++;
  ServiceStatus.dwWaitHint = 0;
  if (!  SetServiceStatus(  ServiceStatusHandle,
                            & ServiceStatus
                         )
     )
  {... return; }

  bool waitFor = true;
  do
  {
   ...
  } while ( waitFor );

  ServiceCleanup();

  ServiceStatus.dwWin32ExitCode = 0;
  ServiceStatus.dwCurrentState = SERVICE_STOPPED;
  ServiceStatus.dwCheckPoint++;
  ServiceStatus.dwWaitHint = 0;

  SetServiceStatus( ServiceStatusHandle,
                    & ServiceStatus
                  );


=-==-=-==-=-=-=-=-=-=-=-=-=-=-

void ServiceCleanup(void)
{
  ServiceStatus.dwWin32ExitCode = 0;
  ServiceStatus.dwCurrentState = SERVICE_STOP_PENDING;
  ServiceStatus.dwCheckPoint = 0;
  ServiceStatus.dwWaitHint = 10000;
...
}
Reply With Quote
Old 05.11.2002, 15:00   #4
Школьник
 
Join Date: 05 2002
Location: Yerevan
Posts: 202
Downloads: 0
Uploads: 0
Reputation: 0 | 0
Post

Greco, спасибо за совет. Попробую адаптировать все это под Дельфи, так как мне именно там все это и надо.

Данке шон, короче.
Reply With Quote
Sponsored Links
Reply

Thread Tools


На правах рекламы:
реклама

All times are GMT. The time now is 00:48.


Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.