![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
посылка сообщения в локальной сети [D6, Win2k]
lead-in © (2008-05-21 11:45:00)Добрый день. Есть такой вопрос - как узнать запущена ли какая-либо служба (net send, например) на удалённом пк, нужно вот отправить сообщение, а кроме net send`а ничево не знаю подходящего, вообще сообщение нужно отправить анонимно, net send показывает сетевое имя отправителя, а можно это сделать не раскрывая своего ip?
lead-in (2008-06-18 13:36:00) [1]
> alexm_hs_
спасибо! буду пробовать)...
alexm_hs_ (2008-06-17 19:23:00) [2]Ах, да! Извиняюсь! Днем сегодня сам уже подумал.
конечно же вот здесь другой флаг (в первой функции)
hSCManager := OpenSCManager(PChar(hostaddr), nil, SC_MANAGER_CONNECT);
Rouse_ (2008-06-17 11:02:00) [3]
> alexm_hs_ (23.05.08 21:14) [8]
>
> Никаких прав администратора не надо на чужом компе
Точно уверен?
alexm_hs_ (2008-06-16 22:49:00) [4]да! и не забудьте подключить к проекту модуль WinSvc :)
alexm_hs_ (2008-06-16 22:45:00) [5]определить статус службы:
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 с логином и паролем пользователя, обладающим этими привилегиями. Удачи
multiflex (2008-06-16 17:44:00) [6]Никакого смысла даже если и прочитаеш "список состояний", то уж запустить нужную службу без привилегий тебе точно не удастся. лучше засади на тот комп резидента, пускай висит себе %)
lead-in (2008-06-16 12:09:00) [7]
> alexm_hs_
да конечно! привидите, если не трудно... время ещё есть
DVM (2008-05-23 21:16:00) [8]
> это намного неожиданней и соот-но приятней)))
Доставку цветов на дом лучше закажи. Там анонимно тоже можно.
alexm_hs_ (2008-05-23 21:14:00) [9]Никаких прав администратора не надо на чужом компе. Дяля получения списка служб и их состояния. если код нужен - скажите
Сергей М. (2008-05-21 15:00:00) [10]Не соглашусь)
Кому как)
lead-in (2008-05-21 14:56:00) [11]Да в принципе))) но согласитель если выползает сообщение прям "на рабочий стол" - это намного неожиданней и соот-но приятней)))
Сергей М. (2008-05-21 13:00:00) [12]Почтовой).. Если адресат по случаю праздника будет регулярно проверять почту)
lead-in (2008-05-21 12:59:00) [13]а их (прав) естественно нет, то есть никакими службами здесь не обойтись?
Сергей М. (2008-05-21 12:41:00) [14]
> как узнать запущена ли какая-либо служба (net send, например)
> на удалённом пк
Для этого нужно иметь административные права на целевом компе
lead-in (2008-05-21 12:04:00) [15]Да никакой шифровки, поздравление с праздником просто, и чтоб не знали от кого)))
Сергей М. (2008-05-21 11:59:00) [16]
> нужно отправить анонимно
От кого шифруемся ?)