
может ли файл bat или vbs принимать аргумент (путь к exe-файлу), а затем создать ярлык для этого файла и поместить его в папку автозагрузки или добавить запись в реестр для запуска этого exe-файла при запуске Windows?
но я хочу, чтобы тот же скрипт мог также удалить запись автозагрузки (на всех версиях ОС).
поэтому я предполагаю, что скрипту необходимо будет отправить два параметра/аргумента: 1 - файл/exe для запуска при запуске 2 - добавить или удалить запись из автозагрузки
Это возможно?
решение1
Во-первых, я хотел бы посоветовать вам дважды проверить расположение ключей «Выполнить» в реестре для всех операционных систем старше Vista, поскольку я давно с ними не работал, поэтому могут быть различия, которых я не помню.
Если я правильно понял ваш вопрос, этот пакетный скрипт должен делать то, что вам нужно. Он предоставляет вам простое меню для выбора добавления или удаления программы из ключей запуска (автозагрузки), а затем позволяет ввести имя программы и путь к исполняемому файлу.
: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
В качестве альтернативы, если вам просто нужно иметь возможность добавлять или удалять одну и ту же программу и не нужно вводить несколько имен программ или путей к exe-файлам, то вы можете изменить скрипт следующим образом, заменив %keyname% на имя вашей программы, а %expath% на путь к вашему исполняемому файлу (без %), а затем сохранить его. Убедитесь, что ваше keyname одинаковое как при добавлении, так и при удалении.
Вы также можете заменить строки «goto begin» на «exit», если вы просто хотите выйти из скрипта после выбранного действия.
: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