Script di file batch Come esportare, trovare e sostituire e reimportare una chiave di registro (XP, Win2k3, Vista, Windows 7)

Questa ricetta è progettata per le persone più esperte del sistema operativo e per coloro che lavorano in un'impostazione aziendale di distribuzione delle app. Molte volte quando si lavora nell'IT e in un team di distribuzione dell'app si incontra situazioni in cui è necessario trovare una chiave di registro e trovare una chiave e sostituirla con una nuova voce. Tuttavia, a volte ci sono casi in cui si conosce la chiave di accesso al Registro di sistema principale, ma non si è sicuri di quali voci sottostanti potrebbero dover essere modificate. Troviamo una soluzione!


AVVERTIMENTO:
Se non ti senti a tuo agio con il prompt dei comandi, i file batch e il registro di Windows; si prega di prestare particolare attenzione durante il test / l'uso di questo file batch. Personalmente raccomanderei di testare su una macchina virtuale (es. Virtualbox, gratis, VMWare Workstation) o una macchina di cui non ti interessa. Sei stato avvertito. 🙂

OK, prima di tutto. Iniziamo con i due pezzi di codice. Per usarlo, copialo e incollalo nel Blocco note e poi salva con i nomi dati (assicurati di cambiare da file txt a Tutti i file nella finestra di dialogo di salvataggio del Blocco note)

Nome del file: Replace.bat (via dostips.com)

@ spegnere
SETLOCAL ENABLEEXTENSIONS
SETLOCAL DISABLEDELAYEDEXPANSION
REM BatchSubstitude - analizza un file riga per riga e sostituisce una sottostringa "
Sintassi REM: BatchSubstitude.bat OldStr NewStr File
REM OldStr [in] - stringa da sostituire
REM NewStr [in] - stringa da sostituire con
File REM [in] - file da analizzare
REM $ cambiato 20100115
Fonte $ REM http://www.dostips.com
if "% ~ 1" == "" findstr "^ ::" "% ~ f0" & GOTO: EOF
per / f "token = 1, * delim =]" %% A in ('"tipo% 3 | find / n / v" ""') do (
imposta "riga = %% B"
se definito linea (
call set "line = echo. %% line:% ~ 1 =% ~ 2 %%"
per / f "delim =" %% X in ('"echo." %% riga %% ""') do %% ~ X
) Eco ELSE.
)

___________________________

Nome del file: MainApp.bat


@ spegnere
Autore REM: seamonkey420
REM http://blogs.tech-recipes.com/seamonkey420
REM
REM 15/03/2010
REM Questo batch analizzerà e aggiornerà le chiavi di registro per il modulo Dictation
REM Ecco cosa fanno i passaggi:
REM 1. Esporta la chiave di registro in un file viewFolder.txt
REM ADD REGISTRY ENTRY TO EXPORT (cioè formattato come: HKEY_CURRENT_USER \ Control Panel \ Mouse)
REM 2. digita la visualizzazione del file e quindi trova qualsiasi voce che contiene "Sì" e sostituisce con "No" e salva nel nuovo file keys.txt
REM 3. Riportiamo la versione del registro richiesta nel nuovo file reg
REM 4. Quindi la sezione echo che i valori andranno sotto
REM 5. Sostituire il nome del server dalle voci utilizzando un file Replace.bat separato e quindi accoda (per gentile concessione di www.dostips.com) al file newkeys.reg
REM 6. Infine, le nuove voci di registro nel file newkeys.reg vengono reimportate nel Registro di sistema
REM 7. Infine, tutti i file temporanei vengono rimossi


imposta rkey = HKEY_CURRENT_USER \ Pannello di controllo \ Mouse
set findv = "Sì"
set replacev = "No"
set registryver = Windows Registry Editor versione 5.00
echo "Modifica dei valori di registro, attendere ..."
REG EXPORT "% rkey%" viewFolder.txt
digita viewFolder.txt | trova% findv%> keys.txt
echo% registryver%> newkeys.reg
echo [% rkey%] >> newkeys.reg
CALL Replace.bat% findv%% replacev% keys.txt >> newkeys.reg
reg import newkeys.reg
del / q newkeys.reg viewFolder.txt keys.txt
Uscita

______________________

Per utilizzare questo, è necessario modificare MainApp.bat (fare clic con il tasto destro del mouse su di esso e fare clic su Modifica, il Blocco note si aprirà)

Fondamentalmente il MainApp.bat interrogherà una chiave di registro che si definisce nella variabile "set rkey =" (nel mio file batch, io uso due impostazioni del mouse come esempio)

Quindi esporterà la chiave e le sottochiavi in ​​un file chiamato viewFolder.txt

Quindi usa il comando FIND per cercare il file viewFolder.txt per il valore impostato nella variabile "findv =" (nel mio file batch, Sì) e quindi esporta quei valori in un nuovo file chiamato keys.txt

Creiamo quindi il nostro file di registro che verrà reimportato con i nuovi valori facendo eco alla versione del registro richiesta in un file chiamato newkeys.reg

Quindi aggiungeremo la chiave di registro che abbiamo cercato sotto al file newkeys.reg (nel mio file batch, la chiave del pannello di controllo di moue)

Ora, utilizziamo il file Replace.bat per trovare la chiave che vogliamo sostituire e sostituirla con la nuova chiave e quindi aggiungere questi dati al file newkeys.reg.
Quindi, a questo punto, siamo pronti per reimportare il file di registro con i nuovi valori e utilizzare reg import per importarlo nuovamente.
Infine puliamo e rimuoviamo i file newkeys.reg, viewFolder.txt e keys.txt e abbandoniamo il nostro programma.

GLI APPUNTI:
-Richiede di essere un account amministratore da eseguire o essere in grado di eseguire con diritti elevati (come con la maggior parte delle cose basate sul registro)
- Esegui come utente di sistema protetto tramite Novell Zenworks per eseguire su un computer non amministratore e ottenere le chiavi appropriate se è una chiave CURRENT_USER.
-Metti REM di fronte a qualsiasi riga per rimarcarlo e, a turno, saltare dalla corsa.
-Aggiunta di una pausa alla fine del file batch per lasciare la finestra del prompt dei comandi e anche cambiare @echo off su @echo on (per il debug, test)
-Puoi anche utilizzare altre variabili di sistema in questo file batch
-Funziona su qualsiasi versione di Windows XP e versioni successive; Vista e Win7.