Hallo zusammen
Für ein Projekt wäre es gut, wenn ich auf einem Remotecomputer ein Programm starten könnte.
Der Benutzer, welcher das Script ausführt, hat lokale Adminrechte auf dem Remotecomputer. (Alles Win7 x64)
Natürlich könnte ich psexec verwenden. Doch es reizt mich schon, das alles in AutoIt zu lösen.
Nach einiger Zeit suchen, konnte ich folgendes Script zusammenstellen:
Spoiler anzeigen
;http://msdn2.microsoft.com/en-us/library/aa389388(VS.85).aspx
[/autoit] [autoit][/autoit] [autoit]MsgBox(0, "", _RemoteStart('C:\Windows\System32\Notepad.exe', "localhost", 1))
[/autoit] [autoit][/autoit] [autoit]Func _RemoteStart($Program, $RemoteComputer, $ShowWindow = 1)
;ShowWindow = 1 => Show / 0 => Hide
Local $oWMIService, $oStartup, $oConfig, $oProcess
Local $iProcessID, $iReturn
$oWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy, (Debug)}!\\" & $RemoteComputer & "\root\cimv2")
$oStartup = $oWMIService.Get("Win32_ProcessStartup")
$oConfig = $oStartup.SpawnInstance_
$oConfig.ShowWindow = $ShowWindow
$oProcess = $oWMIService.Get("Win32_Process")
$iReturn = $oProcess.Create($Program, Default, $oConfig, $iProcessID)
$oWMIService = 0
$oStartup = 0
$oConfig = 0
$oProcess = 0
If $iReturn <> 0 Then
Return False
Else
Return True
EndIf
EndFunc ;==>_RemoteStart
Auf dem lokalen Computer läuft es
Doch wenn ich den String localhost auf den Remote-PC umstelle, bekomme ich zwar ein True zurück, doch es wird nichts ausgeführt.
Kann mir jemand helfen?
Gruss, Veronesi