Utilizzare l’utilità REGINI per modificare le autorizzazioni delle chiavi di registro

L’utilità “RegIni.exe” deriva dal Resource Kit di Microsoft Windows  NT 4.0, tuttavia può essere utilizzata ancora oggi per cambiare velocemente le autorizzazioni delle chiavi di registro mediante script in quanto è presente nativamente anche nei recenti sistemi operativi Windows (come ad esempio Windows 7 o Windows 8). Ho scelto questo metodo perché a mio parere si distingue per l’immediatezza nell’utilizzo e per la semplicità di implementazione: è possibile lanciare lo script manualmente, utilizzarlo direttamente come script di login in un ambiente di dominio oppure utilizzando il parametro “-m” è possibile eseguire direttamente la connessione alla condivisione amministrativa di un computer remoto.

REGINI permette anche di eseguire altri tipi di modifiche sul registro (eliminazione, creazione e modifica di chiavi e valori), ma non verranno affrontate in questa guida.

L’utility REGINI utilizza un semplice file di testo per contenere le operazioni da eseguire: il file può avere anche estensione “.txt” e deve riportare in ogni riga il percorso completo della chiave di registro e le impostazioni di protezione da applicare. Notare che le impostazioni di protezione non vengono propagate automaticamente ad eventuali sottochiavi, quindi è necessario creare una riga per la chiave principale ed una riga per ogni eventuale sottochiave.

Qui è possibile vedere un esempio:

\registry\machine\software\classes\CLSID\{9A0EB8C5-3ADB-11D3-BCEE-00C04F72DA55} [1 5 7 17]
\registry\machine\software\classes\CLSID\{9A0EB8C5-3ADB-11D3-BCEE-00C04F72DA55}\LocalServer32 [1 5 7 17]

Nel file di testo la prima parte della chiave va sempre convertita come segue:

HKEY_LOCAL_MACHINE viene convertita in \registry\machine.

HKEY_USERS viene convertita in \registry\user.

HKEY_CURRENT_USER viene convertita in \registry\user\user_sid, dove “user_sid” rappresenta l’ID di protezione associato all’account utente.

HKEY_CLASSES_ROOT viene convertita in \registry\machine\software\classes

La seconda parte (tra parentesi quadre) contiene invece le impostazioni di sicurezza da applicare.

Ogni numero corrisponde ad un privilegio, per più privilegi ogni numero deve essere separato da uno spazio.

Qui è possibile vedere la corrispondenza esatta tra i numeri e le autorizzazioni:
1  – Accesso completo per gli amministratori
2  – Accesso con privilegi di lettura per gli amministratori
3  – Accesso con privilegi di lettura e scrittura per gli amministratori
4  – Accesso con privilegi di lettura, scrittura ed eliminazione per gli amministratori
5  – Accesso completo per l’autore
6  – Accesso con privilegi di lettura e scrittura per l’autore
7  – Accesso completo globale
8  – Accesso con privilegi di lettura globale
9  – Accesso con privilegi di lettura e scrittura globale
10 – Accesso con privilegi di lettura, scrittura ed eliminazione globale
11 – Accesso completo per gli utenti esperti
12 – Accesso con privilegi di lettura e scrittura per gli utenti esperti
13 – Accesso con privilegi di lettura, scrittura ed eliminazione per gli utenti esperti
14 – Accesso completo per gli operatori di sistema
15 – Accesso con privilegi di lettura e scrittura per gli operatori di sistema
16 – Accesso con privilegi di lettura, scrittura ed eliminazione per gli operatori di sistema
17 – Accesso completo per il sistema
18 – Accesso con privilegi di lettura e scrittura per il sistema
19 – Accesso con privilegi di lettura per il sistema
20 – Accesso con privilegi di lettura, scrittura ed esecuzione per gli amministratori
21 – Accesso completo per gli utenti interattivi
22 – Accesso con privilegi di lettura e scrittura per gli utenti interattivi
23 – Accesso con privilegi di lettura, scrittura ed eliminazione per gli utenti interattivi

Quindi nell’esempio precedente la prima riga non farà altro che modificare la chiave

“HKEY_LOCAL_MACHINE\software\classes\CLSID\{9A0EB8C5-3ADB-11D3-BCEE-00C04F72DA55}” impostando come autorizzazioni: accesso completo come amministratore (1), accesso completo per l’autore/proprietario (5), accesso completo globale (7) e accesso completo per il sistema (17). La seconda riga invece applica le stesse impostazioni anche alla sottochiave “LocalServer32”.

Come descritto precedentemente esistono diverse alternative per far eseguire i comandi specificati nel file di testo.

Il metodo più immediato è quello di eseguire REGINI direttamente sul computer da modificare inserendo il percorso del file di testo:
regini.exe percorsofileditesto
Vista la semplicità consiglio di utilizzare direttamente uno script batch. Lo script potrà essere eseguito anche in remoto specificando il percorso di una condivisione di sola lettura che contiene il file di testo.

In aggiunta è possibile utilizzare REGINI per eseguire i comandi direttamente in un computer remoto.

Per fare questo si può aggiungere alla riga di comando questo parametro:

-m \\nomecomputer

Tale comando va utilizzato preferibilmente in un ambiente di dominio a causa delle impostazioni di sicurezza delle condivisioni amministrative dei moderni sistemi operativi Windows. Infatti l’utente che esegue il comando remoto dal server deve avere i privilegi sufficienti di accesso anche sul computer client.

E’ possibile anche implementare altri tipi script (VBScript, PowerShell) che generano un file di testo dinamicamente ed eseguono “RegIni.exe” specificando tale file. Questo permette di “incorporare” tutti i comandi all’interno di un unico file di script, ma ha lo svantaggio di non essere riutilizzabile.

Ad esempio nel caso di VBScript:

' Crea il file temporaneo
set oFS = CreateObject("Scripting.FileSystemObject")
strNomeFile = oFS.GetTempName
set oFile = oFS.CreateTextFile(strNomeFile)
' Inserire i vari comandi che andranno scritti nel file di testo temporaneo
oFile.WriteLine "\registry\machine\software\classes\CLSID\{9A0EB8C5-3ADB-11D3-BCEE-00C04F72DA55} [1 5 7 17]"
oFile.Close
' Esegue il comando di "RegIni.exe" attendendo il termine dell'esecuzione
set oShell = CreateObject("WScript.Shell")
oShell.Run "regini " & strNomeFile, 8, true
' Elimina il file temporaneo creato
oFSO.DeleteFile strNomeFile

Riferimenti esterni

Microsoft Support – Utilizzo dell’utilità Regini.exe per impostare le autorizzazioni nelle chiavi del Registro di sistema

Microsoft Support – HOW TO: Utilizzare uno script per modificare le autorizzazioni del Registro di configurazione dalla riga di comando

MSDN Blogs – How to change Registry Permissions with RegIni.exe (VBScript)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *