![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как заставить сетевой комп запустить приложение командой сервера? [D7, Win2k]
Slonco © (2004-09-30 08:57:00)Вкраце. Есть программа на сервере, которая в определенный момент должна заставить некоторые сетевые компьютеры запустить некое приложение. Как это делается? Какие существуют методики? Помогите кто сталкивался с этой проблемой.
Спасибо.
Slonco (2004-10-01 11:28:00) [1]Все это хорошо, но я не знаю VB скриптов и переделка на Дельфи убьет полдня (в лучшем случае). Вот как сие перевести на Дельфи? Я не представляю:
'************************************************************************
'*This script is for executing an application on a remote
'*computer running Win2K or WinNT w/WMI installed.
'*
'*Author: Darron Nesbitt
'*Date: 7/10/2001
'*
'************************************************************************
Dim strComputerName ' The Computer Name to be queried via WMI
Dim strWinMgt' The WMI management String
On Error Resume Next
'get computer's name or ip address
strComputerName = ucase(InputBox("Enter the remote computers name or IP","Computer Name/IP"))
AppPath = ucase(InputBox("Enter path to application:" & VBCRLF & VBCRLF & "Example:C:\WINNT\SYSTEM32\Calc.exe","Application Path"))
WorkingDirectory = ucase(InputBox("Enter path to application directory" & VBCRLF & VBCRLF & "Example: C:\WINNT\SYSTEM32","Application Working Directory"))
strWinMgt = "winmgmts://" & strComputerName & ""
'
' Get Computer/User Info
'
Set CompSysSet = GetObject(strWinMgt).ExecQuery("select * from Win32_ComputerSystem")
for each CompSys in CompSysSet
strDescription = CompSys.Description
strModel = CompSys.Model
strName = CompSys.Name
strManufacturer= CompSys.Manufacturer
strUserName= CompSys.UserName
next
CompInfo = "Computer Information" & VBCrLf & VBCrLf
CompInfo = CompInfo & "Computer Name: " & strName & VBTab & "User: " & strUserName & VBCrLf
'connect to processes
Set Process = GetObject(strWinMgt).Get("Win32_Process")
'start app
RetVal = Process.Create (AppPath,WorkingDirectory,null,PID)
'if 0 not returned error
if RetVal 0 then
MsgBox "Error: " & Err.Description & ":" & Err.Number
else
'build ProcessInfo string
Set Processes = GetObject(strWinMgt).ExecQuery("select * from Win32_Process where ProcessID = " & PID)
for each Process in Processes
RetVal = Process.GetOwner(strUser,strDomain)
ProcessInfo = "Name: " & Process.Caption & VBTAB & "ProcessID: " & PID & VBCRLF
ProcessInfo = ProcessInfo & "Process Owner: " & ucase(strDomain) & "\" & ucase(strUser) & VBCRLF
next
'display info about computer and process
RetVal = MsgBox (CompInfo & VBCRLF & VBCRLF & "Application started." & VBCRLF & VBCRLF & _
ProcessInfo,VBOKOnly,strComputerName & " - Start Application")
end if
msgbox "Done!!"
Хэльп плиииииз!
BiN (2004-09-30 16:59:00) [2]Можно использовать WMI и иже с ним
вот небольшой пример на VB, переделка на Дельфи занимает 3 минуты:
http://www.enterpriseitplanet.com/resources/scripts_win/article.php/3081841
Reindeer Moss Eater (2004-09-30 14:29:00) [3]Команда отдается кому-то кто её может принять и понять что она означает.
Это может быть программа.
На том компьютере есть такая программа?
Slonco (2004-09-30 14:27:00) [4]Команда от компа на котором стоит Win2003Server сетевому компу. Я имею ввиду команду для командной же строки виндовс.
Reindeer Moss Eater (2004-09-30 14:17:00) [5]Есть ли такая команда?
Команда кому?
Slonco (2004-09-30 14:01:00) [6]Подробности пришлось искать самому. Нашел я эту at, это команда виндовозовской командной строки:
At
Вывод списка запланированных команд или планирование запуска команд или программ на компьютере в указанное время. Для работы команды at должна быть запущена служба расписаний.
at [\\имя_компьютера] [[код] [/delete] | /delete [/yes]]
at [\\имя_компьютера] время [/interactive] [/every:дата[,...] | /next:дата[,...]] команда
Все гениальное оказалось весьма простым! Однако, можно ли сделать жизнь еще слаще? Можно ли запустить программу СРАЗУ, не устанавливая в командной строке времени и даты запуска, а? Есть ли такая команда? Я что-то не могу найти :(
kaZaNoVa (2004-09-30 14:00:00) [7]Slonco (30.09.04 9:48) [3]
> А, скажем, службы Telnet и RPC можно приспособить для
> этой цели
Telnet запросто, но его сначала нужно запустить .. (по умолчанию он отключён)+ надо знать пароли локальных пользователей ...
RPC точно не знаю, но если нет патча, то можно юзать его через эксполоит (поищи в нете - он идёт исходником на си)
Slonco (2004-09-30 10:25:00) [8]Неа, а что это за команда. Можно поподробнее, плииииииииииз :)
Alex Konshin (2004-09-30 10:13:00) [9]Команду "at" не пробовал?
Slonco (2004-09-30 09:48:00) [10]А, скажем, службы Telnet и RPC можно приспособить для этой цели? Или они не связаны с поставленным мною вопросом?
Rouse_ (2004-09-30 09:38:00) [11]На нужных тебе компьютерах запускается написанный тобой сервис, потом связываешся с нужным тебе сервисом и отдаешь ему команду на нужные тебе действия...
Slonco (2004-09-30 09:01:00) [12]Сеть LAN если что.