Вы можете использовать команду reg для запроса соответствующего ключа реестра:
reg QUERY HKCU\Software\Microsoft\Windows\CurrentVersion\Run > out
Это даст вам список ключей в файле "out", например:
UIWatcher REG_SZ D:\Utils\Ashampoo UnInstaller\UIWatcher.exe
SpybotSD TeaTimer REG_SZ C:\Program Files\Spybot - Search & Destroy\TeaTimer.exe
SandboxieControl REG_SZ "C:\Program Files\Sandboxie\SbieCtrl.exe"
WMPNSCFG REG_SZ C:\Program Files\Windows Media Player\WMPNSCFG.exe
Вам необходимо проанализировать этот список, чтобы получить первый и второй токен, где REG_SZ - разделитель. Если вы хотите придерживаться простого пакетного языка (meh ...), который представляет собой не что иное, как проблему, вам придется использовать команду FOR / F для получения токенов в порядке:
FOR /F "tokens=1,2 delims=$" %i in (out) do @echo %i %j
Перед этим вам нужно заменить REG_SZ на какой-нибудь символ, скажем, $, поскольку FOR не принимает разделители строк. Весь процесс может быть помещен в один пакетный файл:
SETLOCAL EnableDelayedExpansion
@echo off > StartUp.txt
FOR /F "skip=2 usebackq tokens=* delims= " %%i in (`reg QUERY HKCU\Software\Microsoft\Windows\CurrentVersion\Run`) do (
set LINE=%%i
set LINE=!LINE:REG_SZ=$!
FOR /F "tokens=1 delims=$" %%j in ('cmd.exe /C echo !LINE!') do echo %%j >> StartUp.txt
)
После запуска StartUp.txt должен содержать полные имена программ, каждая в отдельной строке. Конструкция 'cmd.exe / C echo! LINE!' сбивает с толку. Я поставил это в качестве обходного пути к проблеме со сканированием переменной LINE. Согласно документации это должно быть просто "! LINE!" но по какой-то причине это не работает ... На случай, если вам интересно! VAR! синтаксис, см. set /?
В любом случае, пакетный язык отнимает много времени, поэтому лучше избегать его, если это возможно, или использовать его в сочетании с некоторыми серьезными инструментами, такими как awk, sed, autohotkey и т. Д. Каждый из них может анализировать выходные данные команды reg. в одной строке регулярного выражения, в то время как autohotkey может создать даже хороший графический интерфейс для него, и вы можете полностью избежать пакетного сценария.
В конце также не забудьте также запустить раздел «Все пользователи».