Entwickler-Ecke

Off Topic - Batch Datei nach Windows Start ausführen


LINUS19 - Mi 14.02.18 20:31
Titel: Batch Datei nach Windows Start ausführen
Hallo,
wie kann man eine Batch Datei nach Systemstart ausführen(bei Windows 10)?
Ich habe eine Batch Datei erstellt von der ein Java Programm gestartet wird . Die Batch Datei habe ich im "Registrierungs-Editor"
in den Pfad "Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" getan, aber es passiert bei einem Neustart nichts.

LG
LINUS19


Moderiert von user profile iconChristian S.: Topic aus Alle Sprachen - Alle Plattformen verschoben am Mi 14.02.2018 um 19:49


Symbroson - Do 15.02.18 01:52

also 'Computer' hast sich bei mir erstmal als "C:\Program Files(x86)" herausgestellt. Was aber HKEY_CURRENT_USER sein soll, weiß ich nicht. Ich hab mal versucht den Ordner C:/*/*/Software zu listen, wird aber nichts gefunden. Also weiß ich nicht, wo du da deine Datei hinkopiert hast ^^
auch "C:/*/Software" bzw "C:/*/*/*/Software" bringen keine Ergebnisse

Ich finde es übrigens mal wieder erstaunlich wie extrem langsam das Windows Dateisystem ist. Bei linux gibt ls sogar bei meinem Raspi sofort ein Ergebnis aus, die MINGW32 shell braucht schon bei zwei Sternchen ziemlich lang.
$ ls C:/*/*/*/Software wird fast garnicht fertig...
vielleicht liegt es auch an MinGW - müsste ich mir mal selber was basteln zum Vergleichen.


Palladin007 - Do 15.02.18 02:08

Es gibt mehrere Möglichkeiten, das zu machen.
Spontan fallen mir folgende ein:

@Symbroson:

Such mal in der Windows-Suche nach "regedit" und schau was in dem Programm oben steht :P
Das ist ein Registry-Pfad, darüber sollten sich Autostarts auch einstellen lassen. Den genauen Pfad hab ich aber nicht im Kopf


Symbroson - Do 15.02.18 02:12

Ah. Nie gehört davon. Wer macht denn auch schon ein Dateisystem außerhalb vom Dateisystem...
Danke Palladin :)


Palladin007 - Do 15.02.18 02:25

Microsoft macht sowas :D

Ist sowas wie Windows eigene Datenbank. Warum dieses Format? Ich hab keine Ahnung.
Eventuell haben sie es eingeführt, weil es damals noch kein NTFS gab, sie aber ein System brauchen, was die Anforderungen erfüllt. Also haben sie kurzerhand etwas Eigenes gebaut.
Und heute ist eine Umstellung auf etwas Modernes einfach unmöglich, weil die Registry überall in bekanntem und unbekanntem Windows-Code verteilt ist und auch zig externe Anwendungen sie nutzen.

Wobei Linux da auch nicht viel besser ist.
Die haben ihre Config-Dateien überall verteilt und ich würde fast wetten, dass das Format von der einen Datei zur Anderen immer ein bisschen anders ist.
Microsoft hat das System über einem Weg zugreifbar und immer in ein und dem selben Format. Ganz so schlecht ist es also nicht ^^

Eine relationale Datenbank kommt dabei vermutlich nicht in Frage, da das alles viel zu komplex ist um es in ein sinnvolles relationales Datenmodell zu schreiben.


jaenicke - Do 15.02.18 15:13

user profile iconLINUS19 hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe eine Batch Datei erstellt von der ein Java Programm gestartet wird . Die Batch Datei habe ich im "Registrierungs-Editor"
in den Pfad "Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" getan, aber es passiert bei einem Neustart nichts.
Ich vermute einmal die Batchdatei geht davon aus, dass das Arbeitsverzeichnis ein anderes ist als das Systemverzeichnis, aus dem Autostarts gestartet werden. Schreib doch einfach mal testweise etwas in eine Datei:

Quelltext
1:
echo test > c:\temp\a.txt                    

Wird diese Datei erstellt?

user profile iconPalladin007 hat folgendes geschrieben Zum zitierten Posting springen:
Ist sowas wie Windows eigene Datenbank. Warum dieses Format? Ich hab keine Ahnung.
Eventuell haben sie es eingeführt, weil es damals noch kein NTFS gab, sie aber ein System brauchen, was die Anforderungen erfüllt. Also haben sie kurzerhand etwas Eigenes gebaut.
Ein Grund: Die Registry enthält extrem viele Einträge. Wären das einzelne Dateien und würden diese im Falle eines Roaming-Profils vom Server kopiert, müsstest du ganz schön lange warten... ;-)
Und man müsste auch jede Einstellung in eine eigene Datei packen, da sonst die Rechte auf die einzelnen Werte fehlen würden.

Noch dazu wäre es eine enorme Platzverschwendung, da jede Datei mindestens die Größe einer Zuordnungseinheit hat. Sprich standardmäßig 512 Byte. Bei mehreren Millionen Einträgen wären das schnell mehrere GiB...


LINUS19 - Do 15.02.18 20:55

Was meinst du mit Testweise in eine Datei schreiben?
Eine exe Datei konnte ich dort starten.


jaenicke - Do 15.02.18 23:43

user profile iconLINUS19 hat folgendes geschrieben Zum zitierten Posting springen:
Was meinst du mit Testweise in eine Datei schreiben?
Wenn du den genannten Befehl in deine Batchdatei schreibst, wird "test" in die Datei c:\temp\a.txt geschrieben. Passiert das, weißt du, dass die Batchdatei ausgeführt wird.

Denn wie schon geschrieben, ich vermute, dass du in der Batchdatei einfach davon ausgehst, dass du auf Sachen zugreifen kannst, die im selben Verzeichnis liegen oder ähnliches. Das ist aber nicht der Fall, da das Arbeitsverzeichnis das Systemverzeichnis ist.