Exe ausführen beim runterfahren

  • Hallo zusammen,

    kurz zur erklärung was ich vor habe:

    Spoiler anzeigen
    [autoit]


    ; Identermittlung aus Script von RR04 genommen
    $ident = RegRead("HKEY_CURRENT_USER\Identities", "Default User ID") ; die Identities auslesen
    $datum = @YEAR & @MON & @MDAY & @HOUR & @MIN

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

    $Desktop = "d:\" & @UserName & "\Desktop"
    $Favoriten = "d:\" & @UserName & "\Favoriten"
    $OutlookAddressbuch = "d:\" & @UserName & "\Outlook-Addressbuch"
    $OutlookArchiv = "d:\" & @UserName & "\Outlook-Archiv"

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

    ; Ordner erstellen
    DirCreate($Desktop)
    DirCreate($Favoriten)
    DirCreate($OutlookAddressbuch)
    DirCreate($OutlookArchiv)

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

    ; Ordner Kopieren
    DirCopy("C:\Dokumente und Einstellungen\" & @UserName & "\Desktop", $Desktop, 1)
    DirCopy("C:\Dokumente und Einstellungen\" & @UserName & "\Favoriten", $Favoriten,1)
    DirCopy("C:\Dokumente und Einstellungen\" & @UserName & "\Anwendungsdaten\Microsoft\Outlook", $OutlookAddressbuch,1)
    DirCopy("C:\Dokumente und Einstellungen\" & @UserName & "\Lokale Einstellungen\Anwendungsdaten\Microsoft\Outlook", $OutlookArchiv,1)

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

    ; Dient zur Überprüfung während der Entwicklung
    ;MsgBox(0, "Ident einfügen", @UserName)
    Exit

    [/autoit]

    Das ist die Datei die Ausgeführt werden soll bei jedem runterfahren vom Rechner!
    Wie kann ich es schaffen das diese Datei ausgeführt werden kann?

    Ein versuch vor geraumer Zeit war, das diese Datei per GPedit.msc aufgerufen wird beim Runterfahren.
    Das würde funktionieren, wenn ich diese Datei da auch Automatisch eintragen lassen könnte.

    Dazu noch mein Script was ich dazu geschrieben habe

    Spoiler anzeigen
    [autoit]

    #include <Misc.au3>

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

    Local $title = "Test"
    Local $admin = "user"
    Local $pwd = "Passwort"
    Local $Domain = "Domain"

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

    ; Map X
    DriveMapAdd("X:", "\\Server\group", 0, $admin, $pwd)
    ; Adminrechte geben
    RunAsSet($admin, $Domain, $pwd,0)
    ; Programm ausführen
    DirCreate("C:\WINDOWS\system32\GroupPolicy\User\Scripts")
    ; Kopieren der Dateien
    FileCopy("X:\Aufruf.cmd", "C:\WINDOWS\system32\GroupPolicy\User\Scripts",1)
    FileCopy("X:\scripts.ini", "C:\WINDOWS\system32\GroupPolicy\User\Scripts",1)
    FileCopy("X:\SicherungVonC.exe", "C:\WINDOWS\system32\GroupPolicy\User\Scripts",1)
    ; Adminrechte nehmen
    RunAsSet()
    ; Del X
    DriveMapDel("X:")

    Sleep(1000)
    run("cmd.exe")
    sleep(200)
    send("gpedit.msc")
    send("{enter}")
    sleep(400)
    WinWaitActive("Gruppenrichtlinien")
    Send("{DOWN 7}")
    sleep(200)
    send("{right}")
    sleep(200)
    Send("{DOWN 2}")
    sleep(400)
    send("{tab}")
    sleep(400)
    Send("{DOWN 2}")
    send("{enter}")
    WinWaitActive("Eigenschaften von Abmelden")
    send("{tab}")
    send("{enter}")
    send("C:\WINDOWS\system32\GroupPolicy\User\Scripts\Aufruf.cmd")
    send("{enter}")
    sleep(400)
    send("{enter}")
    sleep(400)
    send("{alt}")
    sleep(400)
    Send("{DOWN 3}")
    send("{enter}")
    send("exit")
    send("{enter}")
    Exit

    [/autoit]

    das geht aber nicht bei jedem User und ich kann mir noch nicht erklären warum es nicht geht!
    vll hat ja noch wer anders ein paar vorschläge wie ich das problem beheben kann!

    MfG
    Psyche

  • puhh, alternative für dich wäre einfach das das runterfahren von autoit erledigt wird...
    wär natürlich nur sinnig wenn du das programm selbst benutzt also dass du anstatt den rechner runter zu fahren das script öffnest das backup gemacht wird und anschließend der rechner runterfährt...

    befehl wäre shutdown

    //Edit: Mit deinem DriveMapAdd problem, sind alle user die dieses Programm benutzen sollen in der Domäne?

    //Edit2: Hab grad noch was gelesen das man unter geplante Tasks auch eine Option hat womit man ein Programm bei runterfahren ausführen kann, ich kann das allerdings jetzt nicht kontrollieren

    //Edit3: Noch ein bisschen Delphi code gefunden, leider kann ich Delphi nicht *heul*. Aber das wäre vllt auch noch eine Methode bedeutet allerdings das dein script in einer schleife nach dem shutdown befehl von windoof lauschen muss...

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

    2 Mal editiert, zuletzt von FireFlyer (16. Oktober 2008 um 15:56)

  • Moinsen,

    gestern ist mir mein Internet abgeschmiert und erst heute nacht irgendwann wieder angelaufen.

    wenn nur ich das machen würde wäre es kein problem das ich das programm nehme zum runterfahren, aber das soll für meine User sein.
    Meine User sind alle in der Domäne!
    Ich habe gerade bei mir in die geplanten Tasks reingeschaut aber da kann ich das nur machen beim Starten des PC´s
    oder beim anmelden des Users.
    Da hier User daten kopiert werden fällt das mit dem starten schon mal raus.
    Und weil ich ja auch die Daten sichere die er täglich anlegt (outlook mails, ...) ist es auch nicht so gut beim Anmelden die Sicherung zu machen.

    Das ist mein dilema.

    Und Delphi ist für mich ein Buch mit 7 Siegeln

    MfG
    Psyche

  • das liest sich doch ganz gut, vllt noch 2 denkanstöße.

    zum einem kannst du das script ja beim systart mitstarten lassen und auf die aktion "shutdown" warten lassen,
    wo es dann aktiv wird.

    [autoit]

    Func _ExitFunc()
    If @exitMethod = 4 Then
    $shutdown = IniRead(@ScriptDir & "\" & $ini, "Display before Shutdown", "Display before Shutdown", "0")
    If $shutdown = 1 Then
    TraySetState(4)
    MsgBox(262144 + 48, "Remember", StringReplace(IniRead(@ScriptDir & "\" & $ini, "Display before Shutdown", "Shutdown-Msg", "Put here your text you want to see before the Shutdown"), "[CRLF]", @CRLF))
    EndIf
    EndIf
    EndFunc ;==> End-Func

    [/autoit]

    Oder wirklich beim Anmelden ausführen und da die Einstellungen/Dokumente vom Vortag sichern ... dürfte sich ja nicht viel bei tuen, oder?

    bin mir nicht sicher, beim shutdown, wenn da noch was ausgeführt wird, kann es mittem im prozess von windows ja wieder gekillt werden, dann ist die sicherung nur halb fertig oder gar defekt.

  • Die Grupppenrichtlinien stehen doch auch in der Registry, oder?
    Denn den GPedit.msc haben nur XPPro-Benutzer (oder Vista).
    Des weiteren, wenn du das schon über den GPeditor machen musst, dann starte nicht erst cmd..., sondern mach

    [autoit]

    Run("mmc gpedit.msc")

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • bin mir nicht sicher, beim shutdown, wenn da noch was ausgeführt wird, kann es mittem im prozess von windows ja wieder gekillt werden, dann ist die sicherung nur halb fertig oder gar defekt.


    Möglich. Ich habe das ganze mal mit einer kleinen Text Datei probiert (also kopieren von einer Textdatei in ein anders Verzeichnis) und das klappt wunderbar.
    In die CMD-Datei kommt nur der kompl. Pfad zur exe, also:

    Code
    @echo off
    C:\test\NC_Console


    Ob dabei Konsistenz gewährleistet werden kann, steht auf einem anderen Blatt und gerade bei Backups halte ich das auch für problematisch.
    Am besten jemanden Fragen, der davon wirklich Ahnung hat.
    Sonst würde ich auch für eine Art Taskplaner tendieren, der automatisch oder manuell für Backups sorgt.

  • ie Grupppenrichtlinien stehen doch auch in der Registry, oder?
    Denn den GPedit.msc haben nur XPPro-Benutzer (oder Vista).
    Des weiteren, wenn du das schon über den GPeditor machen musst, dann starte nicht erst cmd..., sondern mach


    In seinem Fall finde ich es viel einfacher, gleich den ganzen Kram über cmd zu kopieren und nicht erst den weg über AutoIt zu gehen.

  • es reicht leider nicht nur die sachen zu kopieren über cmd
    das habe ich in einer früheren Instanz von meinem Projekt schon versucht.

    folgende sachen solltet ihr noch wissen:
    die user haben absolut kein recht auf c:\windows zu schreiben deswegen auch das kopieren mit den admin rechten.
    wie schon gesagt habe ich die möglichkeit genommen beim abmelden die daten´sicherung durchzuführen damit die aktuell gemachten sachen auch gleich gesichert werden.

    wenn ich die programme bei mir laufen lassen tut alles ohne probleme aber bei den Usern nicht!
    deswegen dieser thread und vll könnt ihr mir ja mit weiteren gedanken weiterhelfen damit ich zu ner lösung komme.

  • Das sind alles user in der AD, aber sie beziehen nur ihre recht davon es werden keine Profile auf dem Server abgelegt.
    wurde mal so festgelegt, und ich kann da auch nicht drauf zugreifen um was zu ändern.
    Finde es war zwar anders besser, aber es ist nicht gewollt.