Endlosschleife sinngemäß?

  • Hallo.

    Ich habe da ein kleine Verständisfrage und zwar:

    Ich ändere ober eine erstellte Oberfläche einen bestimmten Registry Wert auf einem anderen Computer im Netzwerk.
    Ist nun dieser Registry Wert 1 wird die Oberfläche auf den jeweiligen Computer gesperrt.

    Dazu habe ich auf den Clients eine exe am laufen die in einer Endlosschleife alle 1Sek prüft wie der Wert ist!
    Ich weiß nun allerdings nicht ob das sehr performanceraubent ist.

    Gibt es die möglichkeit dies zu ändern? Beispielsweise so, das wenn ich verschiedene Computer auswähle und dessen
    Bildschirm sperren will, diese eine Paket bekommen und die Bildschirmsperre.exe starten um somit die Endlosschleife
    zu umgehen?

    Wie könnte man sowas realisieren? Dies sollte später dann zudem noch als Dienst laufen!


    Vielen Dank im Voraus


    Gruß
    dragst3r

  • Ich spinne mal so einfach drauf los, was mir als erstes in den Kopf kommt. Wie wäre ein kleines Skript was einen UDP Server darstellt, und dem Du über das Netzwerk einen bestimmten Befehl sendst, so nach dem Motto Befehl1 = Desktop sperren Befehl2 = Desktop freigeben.
    Wie schon gesagt nur so ein Gedankenblitz.

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Ok, das ist richtig, dann mach es mit WMI, da kannst du einen neuen Process auf einem Remote-PC erzeugen, wichtig, du solltest Adminberechtigungen auf dem PC haben, es wird keine GUI angezeigt. Sollte aber deinen Anforderungen genügen :)

    VB Script

    Quelle

    AutoIT
    [autoit]

    Global $Computer, $strCMD, $Obj_WMIService,$objProcess, $objProgram, $strShell
    $Computer = InputBox("Ziel-PC","Auf welchem Rechner:",@ComputerName)
    $strCMD = InputBox("WMI Create Process","Was soll gestartet werden?","notepad.exe")
    $Obj_WMIService = ObjGet('winmgmts:\\' & $Computer & '\root\cimv2')

    [/autoit] [autoit][/autoit] [autoit]

    If (IsObj($Obj_WMIService)) And (Not @error) Then

    $objProcess = $Obj_WMIService.Get("Win32_Process")
    $objProgram = $objProcess.Methods_("Create").InParameters.SpawnInstance_
    $objProgram.CommandLine = $strCMD
    $strShell = $Obj_WMIService.ExecMethod("Win32_Process", "Create", $objProgram)
    EndIf

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

    Einmal editiert, zuletzt von McPoldy (19. Februar 2008 um 08:27)

  • GtaSpider : Mit den TCP-Befehlen komme ich leider nicht zurecht!

    McPoldy: Der Ansatz ist ganz gut, aber irgendwie klappt das Remote nicht. Bin auf beiden Maschinen lokaler Admin mit demselben Passwort. Er braucht auch sehr lange dafür die Verbindung aufzubauen. Schafft es aber dann nicht!

    EDIT: Bin nun zurecht gekommen mit TCP. Ist echt klasse!!! Muss jetzt nur noch Prüfen wie es Performance technisch läuft, da es ja immerhin noch eine Endschlosschleife ist, die auf einen TCP Paket wartet

    Einmal editiert, zuletzt von dragst3r (25. Februar 2008 um 13:01)