Bat datei in Startup ordner kopieren und wieder löschen?

3 Antworten

Du kannst keine Batch direkt in einer der möglichen Autostartpositionen ausführen. Batch in einem Autostartordener wir schlichtweg ignoriert.(ebenso wie VB-Script oder Powershellscript.)

Das ist aus gutem Grund so. (sonst könnte jeder Noob mal kurz eine Batch schreiben und starten, welche sich dorthin kopiert und in Zukunft die geschicke des Systems in die "Hand" nimmt) .

Es gibt trotzdem Mittel und Wege diese Sicherheitsvorkehrung zu umgehen.

Da Du es ohnehin irgendwie herausfinden wirst kann ich es Dir auch hier erklären.

Um eine Batch zu Starten kann man diese irgendwo auf der Festplatte ablegen und im Startup-Ordner einen Link auf diese erzeugen.

Das gute Daran ist, das nicht jeder Unbedarfte fähig ist eine Batch zu schreiben, welche Automatisch einen Link erzeugt. (auch wenn es banal einfach ist)

In jedem Fall muss man bereits soviel über die Möglichkeiten des Systems und von Batch wissen um nicht mehr Fragen in dieser Richtung zu stellen.

Etwas im Autostart zu verankern kann schlimme Folgen haben.

Ein shutdown oder eine ForkBomb die beim Start ausgelöst werden können verheerende Folgen haben .

%0|%0

obige Zeile in einer Batch wird von keinem Virenscanner wirklich ernst genommen und ist bestenfalls ein müder Scherz. Ist jedoch in der Lage den Computer dermaßen lahm zu legen , das nur noch der Resetknopf Abhilfe schaffen kann.
Genau deshalb werden keine Scripts im Autostart ausgeführt.

Wenn Du wissen möchtest wo Deine Batch geblieben ist, führe folgende Batch aus:

@echo off
echo Namespace_Enum,Namespace,Folder
start "" /min /b "mshta" "about:<script>a=new ActiveXObject('Shell.Application');s=new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1);for (e=0;e<64;e++){n=a.Namespace(e);try {p=n.Self.Path}catch(err){p=null};s.WriteLine(e+','+n+','+p)};close();</script>"| findstr /i /v "::{ null"
pause
exit /b

diese listet dir alle Spezialordner auf, in einem davon solltest du eigentlich fündig werden.

daraus folgt dann einfach die AutostartOrdner auszufildern und per For-Loop, zu versuchen die Batch zu löschen. einmal wird zwar kein treffer gelandet, aber man kann ja eventuelles "Gemecker" in's nul-Nirvana umleiten

@echo off
for /f "usebackq tokens=3 delims=," %%a in (`mshta "about:<script>a=new ActiveXObject('Shell.Application');s=new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1);for (e=0;e<25;e++){n=a.Namespace(e);try {p=n.Self.Path}catch(err){p=null};s.WriteLine(e+','+n+','+p)};close();</script>"^| findstr /i /v "::{ null"^|find /i "autostart"`) do (
    echo del /f "%%a\meine batch.bat"
)
pause

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Hallo LitegameZ ,

Schau mal im Taskmanager unter dem Reiter Autostart ob die Datei dort zu finden ist.

Sonst hast du sie in irgendeinem Autostart Ordner. Aber eben nicht dem von Windows.

Der Autostart Ordner kannst du schnell finden wenn du Win + R drückst und im Fenster shell:startup eingibst.

Ben

LitegameZ 
Fragesteller
 05.05.2018, 14:25

Ne das weiß ich ja, die bat soll die datei aktivieren..

0
Ben Sellin  05.05.2018, 14:26
@LitegameZ

Willst du "bestimmen" wann die Datei bei einem Start mit gestartet wird und wann nicht? Oder verstehe ich gerade dein Problem nicht?

0
LitegameZ 
Fragesteller
 05.05.2018, 14:27
@Ben Sellin

Nein, du hast in deinem Kommentar geschrieben das man das selber als benutzer machen muss, allerdings möchte ich, das die bat das ganze erledigt

0
Ben Sellin  05.05.2018, 14:30
@LitegameZ

Das Aktivieren und Deaktivieren im Taskmanager meinst du? Damit kann ich dir nicht helfen wie man per Skript darauf zugreift...

0

Sollte ganz einfach per regedit gehen:

set /p "file=Der Pfad zur Datei:    > "
set /p "name=Der Name des Eintrags: > "

REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "%name%" /t REG_SZ /d "%file%"

pause>nul

~Tim