2

может ли bat-файл или vbs-файл получить аргумент (путь к exe-файлу), затем создать ярлык для этого файла и поместить его в папку автозагрузки или добавить запись реестра для запуска этого exe-файла при запуске windows

но я хочу, чтобы тот же сценарий мог удалить запись запуска, а также (на всех версиях ОС).

поэтому я предполагаю, что сценарию нужно будет отправить два параметра / аргумента:1 - файл / exe для запуска при запуске 2 - добавить или удалить запись из запуска

Это возможно?

1 ответ1

2

Во-первых, я хотел бы посоветовать вам дважды проверить расположение ключей запуска в реестре для любой операционной системы старше 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% с путем к вашему исполняемому файлу (без%) и затем сохраните его. Убедитесь, что ваше имя ключа одинаково при добавлении и удалении.

Вы также можете поменять строки "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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .