
um arquivo bat ou vbs pode receber um argumento (um caminho para um arquivo exe), criar um atalho para esse arquivo e colocá-lo na pasta de inicialização ou adicionar uma entrada de registro para executar esse exe na inicialização do Windows
mas quero que o mesmo script seja capaz de remover também a entrada de inicialização (em todas as versões do sistema operacional).
então presumo que o script precisaria receber dois parâmetros/argumentos: 1 - o arquivo/exe a ser executado na inicialização 2 - adicionar ou remover a entrada da inicialização
Isso é possível?
Responder1
Primeiro, gostaria de aconselhá-lo a verificar novamente os locais das chaves de execução no registro de qualquer sistema operacional anterior ao Vista, pois já faz muito tempo que não trabalhei neles, então pode haver diferenças das quais não me lembro.
Se entendi sua pergunta corretamente, este script em lote deve fazer o que você deseja. Ele fornece um menu simples para escolher adicionar ou remover um programa das chaves de execução (inicialização) e permite inserir o nome e o caminho do programa para o executável.
: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
Alternativamente, se você só precisa adicionar ou remover o mesmo programa e não precisa inserir vários nomes de programas ou caminhos exe, então você pode modificar o script assim e substituir% keyname% pelo nome do seu programa, e %expath% com o caminho para o seu executável (sem%) e salve-o. Certifique-se de que seu nome-chave seja o mesmo em adicionar e remover.
Você também pode trocar as linhas “goto start” por “exit” se quiser apenas sair do script após a ação selecionada.
: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