Skript erstellt keine neuen Dateien wenn es als Autorun ausgeführt wird(genügend Rechte sind vorhanden)

  • Hallo Community,

    ich schreibe im Moment ein Skript welches mehrere Neustarts veranlässt und dann durch eine Batch im Autorun Ordner wieder gestartet wird, das klappt auch alles und die Funktionen die folgen werden auch ausgeführt(cmd öffnen etc.) jedoch werden Dinge wie "FileWrite" nicht ausgeführt, mein erster Verdacht waren die Rechte, da die Text Datei in einem Ordner unter C: liegt aber die Rechte dazu sind vorhanden. Hat jemand einen Tipp?

    Den Code kann ich aus Sicherheitsgründen nur zum Teil offenlegen, ich hoffe es kann mir dennoch geholfen werden.

    Mit freundlichem Gruß
    BehindSouls


    Nachtrag: Ach ja, das Skript führt nach dem Neustart weitere Funktionen aus in dem es eine andere Text Datei ausliest um zu wissen wo es fortfahren soll, nach dem Motto: " if script = 2 Then func2() " usw. dies funktioniert auch tadellos.

    Einmal editiert, zuletzt von BehindSouls (21. August 2017 um 11:40) aus folgendem Grund: Nachtrag um Verwirrung auszuschließen

  • Den Code kann ich aus Sicherheitsgründen nur zum Teil offenlegen, ich hoffe es kann mir dennoch geholfen werden.

    Solche Sätze machen mich immer irgendwie misstrauisch. Wenn Du schon nur ein Teilskript postest, dann sollte dieses wenigstens lauffähig sein.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Alles klar, naja ich arbeite hier im Unternehmen mit Zugangsdaten etc. ich kann das Skript ja einfach gleich ganz posten bloß muss ich vorher die Daten rausnehmen und mit Placeholdern ersetzen, dauert einen Moment.

  • Einige Dinge vorweg, ich habe nicht sonderlich schön, noch effizient geschrieben ich hoffe ihr blickt da trotzdem durch, es funktioniert alles wie es soll, bis ab dem ersten Neustart FileWrite nicht mehr funktioniert.

  • Hab das nur mal schnell überflogen, aber hier einige Anmerkungen und auch ein Verdacht warum dir evtl. die Rechte fehlen die Logdatei zu schreiben:

    1. Warum automatisierst du ein sichtbares CMD Fenster mit Tastenbefehlen wie SEND? Führ doch einfach gleich die entsprechenden DOS Commandos via RUN aus.
    2. Warum automatisierst du Outlook mit Tastenbefehlen? Alternativ kommt evtl. die outlook UDF in Frage oder aber es gibt andere, bessere und direktere Methoden ein Outlook Profil zu sichern. Tastenbefehle sind absolut unzuverlässig, wenn man schon GUI Automatisierung nutzt sollte man auf controlsend usw. setzen.
    3. Bitte mehr Details zum eigentlichen Problem...

    - Handelt es sich beim Pfad auf "C:\" um einen Windows Standardordner wie "C:\programme" oder Ähnliches? Wenn ja schützt die Benutzerkontensteuerung oder eine evtl. vorhandene Antivirensoftware evtl. vor Schreibzugriffen.
    - Sehe ich das richtig, dass du beim ersten Durchlauf einen lokalen Administrator anlegst, welcher dann beim zweiten Systemstart automatisch angemeldet wird und zur Scriptfortsetzung genutzt wird? Das Schreibproblem tritt nur unter diesem erstellten Administrator auf? Wenn ja arbeitest du sehr wahrscheinlich beim ersten Durchlauf mit dem Superadministrator "Administrator", welcher spezielle Benutzerkontensteuerungs Einstellungen hat (komplett deaktiviert / keine Rückfrage). Der Account verfügt auch ansonsten über mehr Rechte als alle anderen Administratoren.

    Lösungen wären die Nutzung des Superadministrators, temporäres Deaktivieren der Benutzerkontensteuerung, die Nutzung eines nicht durch die Benutzerkontensteuerung geschützten Verzeichnisses, z.B. "C:\_install" usw.

  • Wie gesagt, ich arbeite da eher mit Hammer anstatt mit Meißel, ich kann deine Punkte schon nachvollziehen, funktionieren tuts ja trotzdem.
    Inwiefern sind die Tastenbefehle für Outlook denn unzuverlässig?

    Bei dem C:\test Ordner handelt es sich um einen zuvor selbsterstellten Ordner.

    Ja den Vorgang siehst du schon richtig:

    Im ersten Durchlauf wird ein Outlook Backup erstellt und ein lokaler Administrator eingerichtet, dieser wird dann beim Neustart automatisch angemeldet
    und das Skript startet wieder, macht dann aber beim zweiten Teil weiter, im zweiten Teil wird die LOG.txt weiter beschrieben und eine DNS Konfiguration durchgeführt usw....

    Das Problem nach dem Neustart ist eigentlich nur, dass bestehende Text Dateien im 'test' Ordner nicht weiter beschrieben werden.
    Starte ich jedoch per HAND das Skript, wird die LOG.txt beschrieben.

    Also gibt es anscheinend ein Problem wie sich mein Skript beim start durch eine .BAT verhält

    Ich habe bereits durch "icacls C:\test /grant Jeder:(CI)(OI)(F)" den Zugriff für alle freigeschaltet, das hat leider auch nicht funktioniert.
    Ich werde mal versuchen bei dem erstellten Benutzer vorher die Benutzerkontensteuerung herunterzustufen, mal sehen ob das was bringt.

    Einmal editiert, zuletzt von BehindSouls (23. August 2017 um 09:03) aus folgendem Grund: Falsche Benennung korrigiert Zusatzinformationen hinzugefügt

  • Ich habe das Problem gelöst..und es war so simpel wie es nur sein konnte, normalerweise deklariere ich den LOG Pfad immer am anfang, also $log = "C:\test\log.txt"

    Das habe ich aber in diesem Skript nicht getan, die Log wurde immer da abgelegt wo das Skript ausgeführt wurde, also irgendwo im nirgendwo.

    Der FIX war also einfach: ich habe eine Deklaration gemacht und alle "Skript_log.txt" Dateien mit $log ersetzt.


    Das nur noch mal gesagt, falls jemand das selbe Problem hat und so blind ist wie ich :D

    Liebe Grüße