Search code examples
for-loopcmdregeditdword

Making a script to change regedit values in all folders and subfolders


Im sure as hell not in any way an experienced coder, so bear with me with these questions.

Im trying to change a LoadBehavior REG_DWORD 0x00000002(2) to a value 0x00000003(3) in several folders incl their subfolders. I want the script to run through each of the folders and subfolders and change the value to 3 if they find the REG_DWORD type. I dont want it to add a REG_DWORD if there isnt any.

Edit: After help from JosefZ I have edited my code below:

Its probably an easy fix for you fellow coders :) Looking forward to hearing from you

My whole code listed below:

@echo off
echo Start af Registry p† remote pc
set /p input="Maskinens wrk-nummer:"
sc \\%input% config remoteregistry start= auto
sc \\%input% start remoteregistry

reg query \\%input%\hku /v LoadBehavior /s | find /I "HKEY_USERS\"

for /F "tokens=*" %%G in ('
    reg query \\%input%\hku /v LoadBehavior /s 2^>NUL ^| find /I "HKEY_USERS\"
  ') do (

         rem next command is merely displayed for debugging purposes
    echo REG ADD \\%input%\%%G /v LoadBehavior /d "3" /t REG_DWORD /f
         rem remove `ECHO` from above command no sooner than debugged

)

Choice /M "Vil du gerne ogs† †bne Registry?"

If Errorlevel 2 Goto No

If Errorlevel 1 Goto Yes

Goto End

:No

Echo Programmet lukker

Goto End

:Yes

Echo Registry †bner

start regedit.exe


:End

timeout 2

Results running the code above:

Start af Registry på remote pc
Maskinens wrk-nummer:wrk0022423
[SC] ChangeServiceConfig SUCCESS
[SC] StartService FAILED 1056:

Der kører allerede en udgave af tjenesten.

HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Excel\Addins\AdHocReportingExcelClientLib.AdHocReportingExcelClientAddIn.1
HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Excel\Addins\DYMO.LabelWriterAddIn
HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Excel\Addins\PowerPivotExcelClientAddIn.NativeEntry.1
HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Outlook\Addins\AccessAddin.DC
HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Outlook\Addins\Add-On-Products.ResourceFinder
HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Outlook\Addins\ColleagueImport.ColleagueImportAddin
HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Outlook\Addins\DYMO.LabelWriterAddIn
HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Outlook\Addins\TelemetryAddin.Connect
HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\PowerPoint\Addins\OneNote.PowerPointAddinTakeNotesService
HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Word\Addins\DYMO.LabelWriterAddIn
HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Word\Addins\OneNote.WordAddinTakeNotesService
REG ADD \\wrk0022423\HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Excel\Addins\AdHocReportingExcelClientLib.AdHocReportingExcelClientAddIn.1 /v LoadBehavior /d "3" /t REG_DWORD /f
REG ADD \\wrk0022423\HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Excel\Addins\DYMO.LabelWriterAddIn /v LoadBehavior /d "3" /t REG_DWORD /f
REG ADD \\wrk0022423\HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Excel\Addins\PowerPivotExcelClientAddIn.NativeEntry.1 /v LoadBehavior /d "3" /t REG_DWORD /f
REG ADD \\wrk0022423\HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Outlook\Addins\AccessAddin.DC /v LoadBehavior /d "3" /t REG_DWORD /f
REG ADD \\wrk0022423\HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Outlook\Addins\Add-On-Products.ResourceFinder /v LoadBehavior /d "3" /t REG_DWORD /f
REG ADD \\wrk0022423\HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Outlook\Addins\ColleagueImport.ColleagueImportAddin /v LoadBehavior /d "3" /t REG_DWORD /f
REG ADD \\wrk0022423\HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Outlook\Addins\DYMO.LabelWriterAddIn /v LoadBehavior /d "3" /t REG_DWORD /f
REG ADD \\wrk0022423\HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Outlook\Addins\TelemetryAddin.Connect /v LoadBehavior /d "3" /t REG_DWORD /f
REG ADD \\wrk0022423\HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\PowerPoint\Addins\OneNote.PowerPointAddinTakeNotesService /v LoadBehavior /d "3" /t REG_DWORD /f
REG ADD \\wrk0022423\HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Word\Addins\DYMO.LabelWriterAddIn /v LoadBehavior /d "3" /t REG_DWORD /f
REG ADD \\wrk0022423\HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\SOFTWARE\Microsoft\Office\Word\Addins\OneNote.WordAddinTakeNotesService /v LoadBehavior /d "3" /t REG_DWORD /f
Vil du gerne også åbne Registry? [Y,N]?

Solution

  • To show all subkeys where a value occurs (used temp value name instead of LoadBehavior merely for demostration):

    ==> reg query \\%input%\hku /v temp /s | find /I "HKEY_USERS\"
    HKEY_USERS\.DEFAULT\Environment
    HKEY_USERS\S-1-5-21-3900305277-3673560937-2769375459-163256\Environment
    HKEY_USERS\S-1-5-18\Environment
    

    Use next for /F loop instead of reg add … in your code:

    for /F "tokens=*" %%G in ('
        reg query \\%input%\hku /v LoadBehavior /s 2^>NUL ^| find /I "HKEY_USERS\"
      ') do (
    
             rem next command is merely displayed for debugging purposes
        echo REG ADD \\%input%\%%G /v LoadBehavior /d "3" /t REG_DWORD /f
             rem remove `ECHO` from above command no sooner than debugged
    
    )