Domanda

Ho bisogno di eseguire un'applicazione o un servizio su un computer remoto. Ho avuto successo con psexec da Sysinternals, ma sto indagando e vorrei Compre alternative. In ultima analisi il comando verrà eseguito da un'applicazione Delphi. Grazie, Pieter.

È stato utile?

Soluzione

Se si vuole seguire il percorso PsExec simile, ecco un esempio (con C ++) fonte, chiamato XCMD .

In alternativa, è possibile scaricare il progetto XCMD aggiornato (ora si chiama 'The Linker Grim') da SourceForge.

Essenzialmente, si estrae un servizio in fase di esecuzione, copia nel sistema remoto, installa come servizio, quindi si collega ad esso (tramite denominati Tubi).

L'altra opzione è quella di utilizzare le abilità di esecuzione remota integrate di WMI. Ecco un esempio in VBScript che si potrebbe convertire in Delphi. L'esempio che segue esegue notepad sul sistema remoto.

' 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

Altri suggerimenti

ssh è una buona scelta se si sarà in streaming di qualsiasi cosa sensibile. Ci sono anche un paio di FOSS sshd server per le finestre che non si basano su Cygwin.

L'altro possiblity sarebbe quella di utilizzare le finestre di comando che pianifica le attività tramite l'utilità di pianificazione di Windows. È possibile inviare i lavori in remoto con il comando fino a quando si dispone di accesso di amministratore e il servizio di pianificazione è in esecuzione sulla macchina. Per esaminare la sintassi, basta aprire una finestra CMD e digitare AT /? .

per esempio per eseguire qualcosa sul computer denominato "server" alle 4 del mattino, basta inserire il comando

AT \\server 4:00 "c:\something.bat"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top