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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.005 c
2-1262610112
Sunktor
2010-01-04 16:01
2010.03.07
Нужно разделить главное окно на несколько функциональных частей


2-1261572735
Shamansky
2009-12-23 15:52
2010.03.07
Access 2007 vs Delphi 2007


1-1238695413
DimaK
2009-04-02 22:03
2010.03.07
Построение Отчета Fastreport


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


15-1261394309
Б
2009-12-21 14:18
2010.03.07
Стрелки в Word 2007.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский