Geplanter Task

  • Hallo

    Ich habe ein kleines Script geschrieben das eine errinerung für 3 lokale PCs starten soll
    da diese nicht an einem Server hängen.

    Das script funktioniert soweit

    wenn ich aber den Geplanten task als Administrator ausführen lasse
    erscheint das nachichten Fenster nicht,
    es erscheint nur wenn ich es als user ausführen lasse.
    gibt es da einen Trick wie ich das ändern kann.

    Danke

    Script:

    Beep(500, 500)
    MsgBox(262144+48,"Erinnerung","Bitte Bringen Sie die Pakete zur Post")

  • Führst du es mit einem User der Adminrecht hat aus oder mit dem System?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Das Fenster erscheint immer auf dem Desktop des Users, der das Programm/Script gestartet hat.
    Wenn es "Administrator" startet, dann auch nur auf dem Desktop von "Administrator" !

    Aber um ein Fenster auf dem Desktop des gerade angemeldeten User erscheinen zu lassen, muss es auch etwas geben. Bei "PSExec" gibt es einen Parameter "-i", mit dem ein Programm remote gestartet wird und auf dem aktuellen Desktop angezeigt werden sollte. Nur welche Funktion unter Windows dafür zuständig ist, habe ich nie in Erfahrung gebarcht.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Hi

    Aber um ein Fenster auf dem Desktop des gerade angemeldeten User erscheinen zu lassen, muss es auch etwas geben.

    ja gibt es

    Code
    C:\>at

    Du musst einfach deine geplanten Tasks mit dem Program "at.exe" manuell erstellen und nicht über die Programmverknüpfung.

    Schau am besten mal hier rein:
    http://support.microsoft.com/kb/313565/de
    Da ist alles sehr schön beschrieben.

    Du erstellst jetzt also ein 2. Autoit Script.

    [autoit]

    $programm = 'D:\WINDOWS\NOTEPAD.EXE'
    $commandName = 'at ' & @HOUR & ':' & @MIN+1 & ' /INTERACTIVE ' & $programm
    Run(@ComSpec & " /c " & $commandName, "", @SW_HIDE)

    [/autoit]


    Im Beispiel hab ich mal Notepad.exe genommen, da müsstest du dein Autoit Skript oder Exe einfügen.
    Ausserdem hab ich den Task so geplant, dass der Task, nachdem das Programm gestartet wurde, 1 Minute später los gehen soll. Schau dir oben die Hilfe an, wie du da die Zeiten ändern kannst.
    [Edit 1]
    Damit das Task Programm oben funktioniert darf die aktuelle Minute NICHT 59 sein ;)
    Warte 1 Minute bis zu vollen Stunde und probiers nochmal :rofl:
    [/Edit 1]

    Damit dieses Skript unabhängig vom Benutzer gestartet wird solltest du ein Verknüpfung im Autostart Ordner hinterlegen und zwar in dem für "Alle Benutzer"

    Code
    C:\Dokumente und Einstellungen\All Users\Startmenü\Programme\Autostart


    [Edit 2]
    Beachte aber das der erstellte Task für jeden Benutzer gilt.
    Wenn sich nun User1 anmeldet und automatisch ein Task erstellt, dass um 14:00 Uhr erfolgen soll
    und sich dann User2 vor 14:00 Uhr anmeldet und wodurch ebenfalls ein Task automatisch erstellt, dass um 14:00 Uhr erfolgen soll,
    dann werden um 14:00 beide Tasks ausgelöst!
    In diesem Fall, solltest du prüfen ob der Task schon existiert oder die Verknüpfung aus dem Autostart nehmen und die Tasks nur einmal erstellen.
    [/Edit 2]

    Damit andere Benutzer dein erstes Autoit Skript benutzen können, sollte es nicht unter

    Code
    C:\Dokumente und Einstellungen\~Anderer User~\


    da die anderen User (ohne Admin-Rechte), sonst keinen Zugriff drauf haben.

    Am besten hinterlegst du es gleich unter

    Code
    C:\Dokumente und Einstellungen\All Users\

    Ich denke so müsste es funktionieren

    Gruß
    CD

    2 Mal editiert, zuletzt von Cyberdyne (16. Oktober 2010 um 17:06)