Запустите приложение или процесс на удаленном компьютере - PullRequest
4 голосов
/ 24 марта 2009

Мне нужно запустить приложение или службу на удаленном компьютере. Я имел успех с Psexec от SysInternals, но я изучаю и хотел бы найти альтернативы. В конечном итоге команда будет запущена из приложения Delphi. Спасибо, Питер.

Ответы [ 3 ]

3 голосов
/ 24 марта 2009

Если вы хотите следовать PSexec-подобному маршруту, вот пример (с C ++) источника, с именем XCmd .

Или вы можете загрузить обновленный проект XCmd (теперь он называется 'The Grim Linker') из SourceForge.

По сути, он извлекает службу во время выполнения, копирует ее в удаленную систему, устанавливает как службу, а затем подключается к ней (через именованные каналы).

Другой вариант - использовать встроенные возможности WMI для удаленного выполнения. Вот пример в VBScript, который вы можете конвертировать в Delphi. В приведенном ниже примере выполняется блокнот на удаленной системе.

' This script provides a function for executing a command on a remote computer
' This uses WMI and requires that you have administrative righs on the remote machine
'

Dim strComputer, strCommandLineToRun

'change the period to an IP Address or computer name
strComputer = "."   'example: strComputer = "192.168.1.105"

'this is the path to the file on the computer whose name/IP address is stored in the strComputer variable
strCommandLineToRun = "c:\windows\system32\calc.exe"


' This calls the function to run the process on a remote computer
RemoteExecute strComputer,"","",strCommandLineToRun


Function RemoteExecute(strServer, strUser, strPassword, CmdLine)
    Const Impersonate = 3

    RemoteExecute = -1

    Set Locator = CreateObject("WbemScripting.SWbemLocator")
    Set Service = Locator.ConnectServer(strServer, "root\cimv2", strUser, strPassword)

    Service.Security_.ImpersonationLevel = Impersonate 
    Set Process = Service.Get("Win32_Process")

    result = Process.Create(CmdLine, , , ProcessId)

    If (result <> 0) Then
        WScript.Echo "Creating Remote Process Failed: " & result
        Wscript.Quit
    End If

    RemoteExecute = ProcessId
End Function
2 голосов
/ 25 марта 2009

ssh - хороший выбор, если вы будете транслировать что-нибудь чувствительное. Есть даже несколько серверов FOSS sshd для Windows, которые не используют Cygwin.

0 голосов
/ 25 марта 2009

Другая возможность заключается в использовании команды windows AT, которая планирует задачи через планировщик windows. Вы можете отправлять задания удаленно с помощью команды, если у вас есть права администратора, а служба планирования работает на другом компьютере. Чтобы проверить синтаксис, просто откройте окно CMD и введите AT /?.

например, чтобы запустить что-то на компьютере с именем «сервер» в 4 часа утра, просто введите команду

AT \\server 4:00 "c:\something.bat"
...