Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.07;
Скачать: CL | DM;

Вниз

посылка сообщения в локальной сети   Найти похожие ветки 

 
lead-in   (2008-05-21 11:45) [0]

Добрый день. Есть такой вопрос - как узнать запущена ли какая-либо служба (net send, например) на удалённом пк, нужно вот отправить сообщение, а кроме net send`а ничево не знаю подходящего, вообще сообщение нужно отправить анонимно, net send показывает сетевое имя отправителя, а можно это сделать не раскрывая своего ip?


 
Сергей М. ©   (2008-05-21 11:59) [1]


> нужно отправить анонимно


От кого шифруемся ?)


 
lead-in   (2008-05-21 12:04) [2]

Да никакой шифровки, поздравление с праздником просто, и чтоб не знали от кого)))


 
Сергей М. ©   (2008-05-21 12:41) [3]


> как узнать запущена ли какая-либо служба (net send, например)
> на удалённом пк


Для этого нужно иметь административные права на целевом компе


 
lead-in   (2008-05-21 12:59) [4]

а их (прав) естественно нет, то есть никакими службами здесь не обойтись?


 
Сергей М. ©   (2008-05-21 13:00) [5]

Почтовой).. Если адресат по случаю праздника будет регулярно проверять почту)


 
lead-in   (2008-05-21 14:56) [6]

Да в принципе))) но согласитель если выползает сообщение прям "на рабочий стол" - это намного неожиданней и соот-но приятней)))


 
Сергей М. ©   (2008-05-21 15:00) [7]

Не соглашусь)
Кому как)


 
alexm_hs_   (2008-05-23 21:14) [8]

Никаких прав администратора не надо на чужом компе. Дяля получения списка служб и их состояния. если код нужен - скажите


 
DVM ©   (2008-05-23 21:16) [9]


> это намного неожиданней и соот-но приятней)))

Доставку цветов на дом лучше закажи. Там анонимно тоже можно.


 
lead-in   (2008-06-16 12:09) [10]


> alexm_hs_


да конечно! привидите, если не трудно... время ещё есть


 
multiflex   (2008-06-16 17:44) [11]

Никакого смысла даже если и прочитаеш "список состояний", то уж запустить нужную службу без привилегий тебе точно не удастся. лучше засади на тот комп резидента, пускай висит себе %)


 
alexm_hs_   (2008-06-16 22:45) [12]

определить статус службы:


function TfSysInfo.ServiceStatus(hostaddr, ServiceName: string): cardinal;
var hSCManager: SC_HANDLE;
 hService: SC_HANDLE;
 lpServiceStatus: _SERVICE_STATUS;
begin
 hSCManager := 0;
 hService := 0;
 try
   hSCManager := OpenSCManager(PChar(hostaddr), nil, SC_MANAGER_ALL_ACCESS);
   if hscManager <> 0 then begin
     hService := OpenService(hSCManager, PChar(ServiceName), SERVICE_QUERY_STATUS);
     QueryServiceStatus(hService, lpServiceStatus);
     result := lpServiceStatus.dwCurrentState;
   end else result := 0;
 finally
   if hService <> 0 then CloseServiceHandle(hService);
   if hscManager <> 0 then CloseServiceHandle(hscManager);
 end;
end;



Расшифровка кодов есть в MSDN.
вот к примеру, как у меня сделано:


 StatusText: array[SERVICE_STOPPED..SERVICE_PAUSED] of string =
 ("Остановлена", "Ожидание запуска", "Ожидание останова", "Запущена",
   "Ожидание продолжения", "Ожидание приостанова", "Приостановлена");


вот как запустить/остановить службу


function TfSysInfo.StartStopService(pcname, ServName: string; startstop: integer): integer; //start - 1, stop - 0; 2 - pause; 3 - continue;
var
 hscManager, hService: LongWord;
 sStatus: TServiceStatus;
 lpServiceArgVectors: PChar;
begin
 result := 0;
 hService := 0;
 hscManager := OpenSCManager(PChar(pcname), nil, SC_MANAGER_ALL_ACCESS);
 try
   if hscManager <> 0
     then
     case startstop of
       0: begin
           hService := OpenService(hscManager, PChar(ServName), SERVICE_STOP);
           ControlService(hService, SERVICE_CONTROL_STOP, sStatus);
           result := 0;
         end;
       1: begin
           lpServiceArgVectors := nil;
           hService := OpenService(hscManager, PChar(ServName), SERVICE_ALL_ACCESS);
           if hService <> 0 then StartService(hService, 0, PChar(lpServiceArgVectors));
           result := 0;
         end;
       2: begin
           hService := OpenService(hscManager, PChar(ServName), SERVICE_PAUSE_CONTINUE {SERVICE_ALL_ACCESS});
           ControlService(hService, SERVICE_CONTROL_PAUSE, sStatus);
           result := 0;
         end;
       3: begin
           hService := OpenService(hscManager, PChar(ServName), SERVICE_PAUSE_CONTINUE {SERVICE_ALL_ACCESS});
           ControlService(hService, SERVICE_CONTROL_CONTINUE, sStatus);
           result := 0;
         end;
     end
   else begin
     result := GetLastError
   end;
 finally
   if hService <> 0 then CloseServiceHandle(hService);
   if hscManager <> 0 then CloseServiceHandle(hscManager);
 end;
end;



однако, если не имеете привилегий администратора на удаленном компьютере, с запуском/остановом ничего не выйдет. надо будет устанавливать подключение к IPC с логином и паролем пользователя, обладающим этими привилегиями. Удачи


 
alexm_hs_   (2008-06-16 22:49) [13]

да! и не забудьте подключить к проекту модуль WinSvc :)


 
Rouse_ ©   (2008-06-17 11:02) [14]


> alexm_hs_   (23.05.08 21:14) [8]
>
> Никаких прав администратора не надо на чужом компе

Точно уверен?


 
alexm_hs_   (2008-06-17 19:23) [15]

Ах, да! Извиняюсь! Днем сегодня сам уже подумал.

конечно же вот здесь другой флаг (в первой функции)


 hSCManager := OpenSCManager(PChar(hostaddr), nil, SC_MANAGER_CONNECT);


 
lead-in   (2008-06-18 13:36) [16]


> alexm_hs_


спасибо! буду пробовать)...



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

Текущий архив: 2010.03.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
10-1164100105
yaJohn
2006-11-21 12:08
2010.03.07
Получить бинарные данные из внешнего OLE сервера


15-1260399563
wl
2009-12-10 01:59
2010.03.07
Линукс - зачем?


15-1257258721
Romkin
2009-11-03 17:32
2010.03.07
Конкурс на Исходниках. С призами


15-1261517422
Юрий
2009-12-23 00:30
2010.03.07
С днем рождения ! 23 декабря 2009 среда


2-1262892262
Sunktor
2010-01-07 22:24
2010.03.07
Как поменять ImageList для кнопки при наведении курсора и нажатии