Autostart funktioniert nicht

  • Abend zusammen.
    Hab wohl eher ein kleineres Problem mit einem Script welches ich hier im Forum gefunden habe.

    Das Script soll mir nach dem hochfahren immer das aktuelle Datum in einer Msg Box anzeigen jedoch funktioniert es leider nicht.

    Benutze die aktuelle stabile Version 3.3.8.1 unter Win 7 32 Bit. Mein Problem ist: Ich möchte dass, das Script automatisch startet sobald der Rechner hochfährt. Wenn ich das Script starte fährt er es allem Anschein nach korrekt durch. Die Msg Box erscheint doch wenn ich den PC neu starte passiert nichts. Ich kann auch keinen neuen Eintrag unter: msconfig \ Systemstart finden.
    Kann mir einer freundlicher Weise sagen was ich falsch mache?

    P.S Hab schon lange nichts mehr gepostet entschuldigt bitte falls mein Spoiler oder Quellcode nicht korrekt angezeigt werden. Bin mir nicht mehr ganz sicher wie das ging. ?( :whistling:

    MfG
    ScarfacePH

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include
    _RunOnStartUp()
    MsgBox(64, 'Willkommen', 'Heute ist der ' & _NowDate() & @CRLF & @CRLF & @UserName, 10)

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

    Func _RunOnStartUp($sName = @ScriptName)
    If @Compiled Then
    RegWrite("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", $sName, "REG_SZ", @ScriptFullPath)
    Else
    RegWrite("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", $sName, "REG_SZ", 'cmd /k "' & @ScriptFullPath & '"')
    EndIf
    EndFunc ;==>_RunOnStartUp

    [/autoit]

    2 Mal editiert, zuletzt von ScarfacePH (12. März 2012 um 18:22)

  • Sicher das der Registry-Eintrag erfolgt? Probier es sonst noch mal hiermit aus:

    Spoiler anzeigen
    [autoit]

    Func _CreateAutostart($sAutostartName, $sPath)
    If $sAutostartName <> "" And StringInStr($sPath, " ") = 0 And $sPath <> "" Then
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", $sAutostartName, "REG_SZ", $sPath)
    If @error Then
    SetError(1, @error)
    Return -1
    EndIf
    Return 1
    Else
    SetError(1)
    Return -1
    EndIf
    EndFunc

    [/autoit]
  • Danke erst mal für den Lösungsvorschlag.
    ne bin mir nicht sicher ob der Eintrag vorhanden ist. Nachdem ich mein Script abgespelt habe erscheint jedoch ganz oben im Script folgendes:

    Spoiler anzeigen


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    sonst keinerlei an Merkwürdigkeiten.

    Hab deine Funktion mal eingesetzt und bekomm da folgenden Fehler:

    Spoiler anzeigen


    C:\Users\Home\Desktop\AutoIT\auto1.3.au3(6,48) : ERROR: _CreateAutostart1() called by a previous line with 0 arg(s). Min = 2. First previous line calling this Func is 3.


    Hmmm? Sorry bin immer noch blutiger Anfänger :wacko: ;(

  • Ich glaube du hast die Funktion so gestartet:

    [autoit]

    _CreateAutostart()

    [/autoit]


    Verlangt werde aber 2 Parameter, einmal der Name der eingetragen werden soll und dann einmal der Pfad zur Anwendung. Z.B. willst du den Autostart anzeigen lassen als "Autoit Starttest" mit dem Pfad zu "C:\Testdatei.exe" dann musst du die Funktion wie folgt aufrufen:
    _CreateAutostart("Autoit Starttest", "C:\Testdatei.exe"), auf deine Frage bezogen probiere mal:

    [autoit]

    _CreateAutostart(@ScriptName, @ScriptFullPath)

    [/autoit]
  • hau dein skript einfach in den Autostart ordner( start ->alle programme -> autostart reinziehen die exe )

  • [autoit]

    FileCopy(@ScriptDir & "\[Name deines Skripts].au3",@StartUpDir,1)

    [/autoit]

    Mh, dann besser so:

    [autoit]

    FileCreateShortcut(@ScriptDir & "\DeinScript.au3", @StartupCommonDir & "\NamederVerknüpfung.lnk", @ScriptDir)

    [/autoit]
  • Es lag wirklich lediglich an den Admin.rechten. Hab meine erste .exe Datei einfach als Admin. ausgeführt und schon hat es funktioniert. Ein wenig peinlich das man da nicht selbst drauf kam aber ok 8| :cursing: . Eine Frage habe ich da jedoch noch.

    Kann ich auch überprüfen ob die exe bereits im im Autostart ist?
    Wenn nicht soll er den Eintrag erstellen und dann die msg Box starten.
    Und wenn ja soll er nur die msg starten.
    Denn im Moment will die exe ja jedesmal wenn sie startet einen Eintrag erstellen oder ist das egal?

  • Danke erstmal für die Hilfe an alle Teilnehmer.
    Habe es wie folgt versucht :

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #requireadmin
    #include

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

    $sName = @ScriptName
    $var = RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", $sName)

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

    If @EXTENDED Then

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

    MsgBox(64, 'Willkommen 1', 'Heute ist der ' & _NowDate() & @CRLF & @CRLF & @UserName, 10)

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

    EndIf

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

    If @error Then
    RegWrite("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", $sName, "REG_SZ", @ScriptFullPath)
    MsgBox(64, 'Willkommen 2', 'Heute ist der ' & _NowDate() & @CRLF & @CRLF & @UserName, 10)

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

    EndIf

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

    Wenn ich den Befehl richtig verstanden habe müsste die Box mit Willkommen 1 nur dann erscheinen wenn auch ein Eintrag vorhanden ist der dem Scriptnamen entspricht.

    Allerdings erscheint eben diese Box obwohl das Script noch gar nicht im Autostart ist.
    Was könnte ich da Falsch gemacht haben?

    4 Mal editiert, zuletzt von ScarfacePH (12. März 2012 um 17:32)

  • @EXTENDED (in Zeile 8) enthält bei mir den Wert 2 (=REG_EXPAND_SZ) wenn der Schlüssel nicht existiert. Damit ist aber Deine IF-Bedingung erfüllt, weil > 0.

    Verwende in Zeile 8 doch einfach ' IF $var <> "" '.

    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"

  • Du fragst das "Macro" @EXTENDED in der Art "IF xxx THEN" ab. Diese Bedingung ist erfüllt wenn:

    xxx = TRUE
    xxx > 0 (ggf. gibt es noch weiter Bedingungen, die aber für Dich hier nicht interessant sind)

    Ich schrieb Dir das die Funktion RegRead bei einem nicht existenten Schlüssel, den Wert 2 für @EXTENDED zurückgibt. Damit wäre dann die Bedingung erfüllt da @EXTENDED > 0 ! obwohl der Schlüssel nicht existiert.

    @EXTENDED ist für das Ermitteln ob der Schlüssel existiert, scheinbar nicht zu gebrauchen.

    Jetzt klar ?

    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"

    Einmal editiert, zuletzt von Micha_he (12. März 2012 um 18:26)