Форум: "Сети";
Текущий архив: 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