Всем привет) Имеется задача - мониторинг и управление процессами на удаленной машине, код, вроде правильный, но работать не хочет, пишет ошибку - "Fatal error: in C:\wamp\www\MeteoTerminal\test.php on line 17",то есть - Код (Text): $objSWbemServices = $objSWbemLocator->ConnectServer($server, "root\cimv2", "IRAM", "IRAM"); которая ни о чем мне не говорит (... вот сам код - Код (Text): $server="192.168.1.231"; $killprocessname = "calc.exe"; //$obj = new COM ( 'winmgmts:{impersonationLevel=impersonate}//' . $server . '/root/cimv2', "MASTER","MASTER" ); $shell = new COM("WScript.Shell"); $objSWbemLocator = new COM("WbemScripting.SWbemLocator"); $objSWbemServices = $objSWbemLocator->ConnectServer($server, "root\cimv2", "IRAM", "IRAM"); $objSWbemServices->Security_->ImpersonationLevel = 3; $obj = $objSWbemServices; $process = $obj->execquery ( "SELECT * FROM Win32_Process WHERE Name='$killprocessname'" ); if ($process->count > 0) { foreach ( $process AS $row ) { $shell->Run("taskkill /s ". $server . "/im $killprocessname /f /t", 2, false); } echo "<pre><b>Process ".$killprocessname." \r\nin server ". $server ." \r\nkilled!</b></pre>"; } elseif ($killprocessname != '.') { echo "<pre><b>Process ".$killprocessname." \r\nin server ". $server ." \r\nnot running!</b></pre>"; } $obj=Null; $shell=Null уже неделю как мучаюсь, не могу понять в чем проблема
Для wmi есть родные vbs и js. Зачем костылять из-под php? По сабжу вариантов море, от рухнувшей службы RPC, до хз чего. Пользуйтесь родными инструментами, будут подробные сообщения об ошибках.
мне нужно именно из-под php, т.к. это всего лишь одна из функций которую должна выполнять программа написанная на php Добавлено спустя 5 минут 33 секунды: .. а службу RPC проверил - работает)
Я к тому, что пусть работа с WMI будет вынесена в родные для этого условия, vbs, js, да хоть powershell. там генерируются необходимые результаты (txt, html...) - в каком душе угодно виде, и их уже грести из php.
попытался JS использовать Код (Text): var loc = new ActiveXObject("WbemScripting.SWbemLocator"); var svc = loc.ConnectServer(".", "root\\cimv2"); coll = svc.ExecQuery("select * from Win32_Process"); var items = new Enumerator(coll); while (!items.atEnd()) { WScript.Echo(items.item().Name); items.moveNext(); } выводит пустую страницу, хотя в других проектах JS работает отлично.. может доступа нет?
Дело было давно (могу наврать с названиями, тут стоит проверить гуглой), вроде как нужно создать объект Scripting.FileSystemObject и в нем будет метод CreateTextFile в котором задается имя файла, а дальше дело техники writeline и все дела.
вот еще вопрос, по поводу процессов, запускать на удаленной машине их получается, но в интерактивном режиме - нет, возможны какие-либо варианты, чтобы запускался не просто процесс, но и графическая оболочка программы?
Насколько я знаю, по-моему нет, поскольку не проектировалось такое. Даже больше скажу, я не представляю как на винде запустить удаленно гуевое приложение (подсовывание во всякие автозапуски или прописывание в шедулер не рассматриваю), архитектурное особенность такое.
ну да, вычитал, что мелкомягкие прикрыли дыру, только процессы можно запустить, а если с гуи, то скрипт с созданием процесса должен лежать на той машине на которой он создается