
Kann eine Bat- oder VBS-Datei ein Argument (einen Pfad zu einer EXE-Datei) annehmen und dann eine Verknüpfung zu dieser Datei erstellen und im Startordner ablegen oder einen Registrierungseintrag hinzufügen, um diese EXE beim Windows-Start auszuführen?
aber ich möchte, dass dasselbe Skript auch den Starteintrag entfernen kann (auf allen Betriebssystemversionen).
Ich gehe also davon aus, dass dem Skript zwei Parameter/Argumente gesendet werden müssen: 1 - die Datei/EXE, die beim Start ausgeführt werden soll 2 - ob der Eintrag beim Start hinzugefügt oder entfernt werden soll
Ist das möglich?
Antwort1
Zunächst möchte ich Ihnen raten, bei allen Betriebssystemen, die älter als Vista sind, die Speicherorte der Run-Keys in der Registrierung noch einmal zu prüfen, da es lange her ist, dass ich damit gearbeitet habe, und es daher Unterschiede geben kann, an die ich mich nicht erinnere.
Wenn ich Ihre Frage richtig verstehe, sollte dieses Batch-Skript das tun, was Sie möchten. Es bietet Ihnen ein einfaches Menü, in dem Sie auswählen können, ob Sie ein Programm zu den Ausführungsschlüsseln (Startup) hinzufügen oder daraus entfernen möchten. Anschließend können Sie den Programmnamen und den Pfad zur ausführbaren Datei eingeben.
:begin
cls
@echo off
echo Program startup Utility
echo.
echo 1. Add Program to Startup
echo 2. Remove Program From Startup
echo x. Exit
set /p choice= Choose A Service:
if not '%choice%'== set %choice%=choice:~0,1%
if '%choice%'=='1' goto :addstartup
if '%choice%'=='2' goto :delstartup
if '%choice%'=='x' goto :exit
:addstartup
cls
echo/
echo/
echo Add Program to Startup
echo or type back to go to main menu
echo/
set /p keyname= Please State Program Name:
if '%keyname%'=='back' goto :begin
set /p expath= Please Enter Path to Executible:
if '%expath%'=='back' goto :begin
reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ /v %keyname% /t REG_SZ /d "%expath%"
timeout /t 3 >nul
goto begin
:delstartup
cls
echo/
echo Remove Program From Startup
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ /s
echo/
set /p keyname= Please Enter Program Name:
reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ /v "%keyname%" /f
timeout /t 3 >nul
goto begin
Wenn Sie alternativ nur dasselbe Programm hinzufügen oder entfernen müssen und nicht mehrere Programmnamen oder EXE-Pfade eingeben müssen, können Sie das Skript wie folgt ändern und %keyname% durch Ihren Programmnamen und %expath% durch den Pfad zu Ihrer ausführbaren Datei (ohne die %) ersetzen und es dann speichern. Stellen Sie sicher, dass Ihr Schlüsselname beim Hinzufügen und Entfernen derselbe ist.
Sie können die „goto begin“-Zeilen auch durch „exit“ ersetzen, wenn Sie das Skript nach der ausgewählten Aktion einfach beenden möchten.
:begin
cls
@echo off
echo Program startup Utility
echo.
echo 1. Add Program to Startup
echo 2. Remove Program From Startup
echo x. Exit
set /p choice= Choose A Service:
if not '%choice%'== set %choice%=choice:~0,1%
if '%choice%'=='1' goto :addstartup
if '%choice%'=='2' goto :delstartup
if '%choice%'=='x' goto :exit
:addstartup
cls
reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ /v %keyname% /t REG_SZ /d "%expath%"
timeout /t 2 >nul
goto begin
:delstartup
cls
reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ /v "%keyname%" /f
timeout /t 2 >nul
goto begin