Что нового

Проверка запущенного процесса на удаленной машине

ChAV

Новичок
Сообщения
12
Репутация
0
Ребят подскажите можно ли проверять наличие процесса на какой либо удаленной машине?
Темы подобные были, ответа вразумительного не нашел....
Спасибо
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$comp='.';сетевое имя компьютера, точка - локальный компьютер
$procesname='winlogon.exe';имя процесса
$obj = ObjGet("WinMgmts:\\"&$comp&"\root\cimv2")
$que=$obj.ExecQuery("Select * from Win32_Process where  caption='"&$procesname&"'")
$res=''
For $o In $que
	$res&='время запуска:'&$o.creationdate&';   название:'&$o.caption&';   приоритет:'&$o.priority&@CRLF
Next
If $res<>'' Then MsgBox(0,'',$res)
$oMyError = 0
Func MyErrFunc()
	MsgBox(4096, "AutoItCOM Test", "We intercepted a COM Error !" & @CRLF & @CRLF & _
			"err.description is: " & @TAB & $oMyError.description & @CRLF & _
			"err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _
			"err.number is: " & @TAB & hex($oMyError.number, 8) & @CRLF & _
			"err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _
			"err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
			"err.source is: " & @TAB & $oMyError.source & @CRLF & _
			"err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _
			"err.helpcontext is: " & @TAB & $oMyError.helpcontext)
	Exit 1
EndFunc
 

Dm666

Осваивающий
Сообщения
221
Репутация
48
Идеально работает для локального компьютера. При попытке натравить на соседний компьютер в сети - думает порядка 40 секунд и выдает ошибку:

PS. Сетевое имя удаленного компьютера однозначно правильное. На обоих компах ХР. Где копать?
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$user='';юзверь на удалённой машине
$pasw='';его пароль
$comp='';сетевое имя компьютера
$procesname='winlogon.exe';имя процесса
If Ping($comp)=0 Then Exit
$cre = ObjCreate("WbemScripting.SWbemLocator")
$obj=$cre.ConnectServer ($comp, "root\cimv2", $comp&"\"&$user, $pasw)
$obj.Security_.ImpersonationLevel = 3
$que=$obj.ExecQuery("Select * from Win32_Process where  caption='"&$procesname&"'")
$res=''
For $o In $que
    $res&='время запуска:'&$o.creationdate&';   PID:'&$o.handle&';   приоритет:'&$o.priority&@CRLF
Next
If $res<>'' Then MsgBox(0,'',$res)
$oMyError = 0
Func MyErrFunc()
    MsgBox(4096, "AutoItCOM Test", "We intercepted a COM Error !" & @CRLF & @CRLF & _
            "err.description is: " & @TAB & $oMyError.description & @CRLF & _
            "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _
            "err.number is: " & @TAB & hex($oMyError.number, 8) & @CRLF & _
            "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _
            "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
            "err.source is: " & @TAB & $oMyError.source & @CRLF & _
            "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _
            "err.helpcontext is: " & @TAB & $oMyError.helpcontext)
    Exit 1
EndFunc

Похоже это у тебя фаервол болтит. Попробуй сначала так, не будет работать - отрубай фаервол и пробуй. Этот вариант не будет работать для локального компа.
 

Dm666

Осваивающий
Сообщения
221
Репутация
48
Отрубил файрволл на удаленной машине. И Касперского заодно, чтоб неповадно было.
Оба скрипта отрабатывают мгновенно, оба с одинаковой ошибкой "В доступе отказано"
 
Верх