http://digilander.libero.it/Cenati Registry |
home | e-mail e contatti | Introduzione al sito | Cosa e' e come imparare VbScript |
|
|
|
|
|
In questa pagina: Introduzione
E' doveroso dire che può essere pericoloso armeggiare con il registro di sistema di Windows. Il sistema operativo stesso e molti programmi sono influenzati dalle informazioni salvate nel registry. Modificare dei valori può significare attivare nuove funzioni o migliorare la performance. Ma anche compromettere il corretto funzionamento di un programma. Gli esempi di questa pagina sono innocui. Tutti gli esempi leggono, scrivono o cancellano chiavi di registro che sono state create appositamente per l'esempio. Nella sezione “Software” della sezione HKEY_LOCAL_MACHINE sono registrati dati necessari al funzionamento di alcuni programmi. Ad esempio gli ultimi documenti aperti, la posizione sullo schermo della finestra, i colori scelti dall'utente, ecc. Gli esempi che ho scritto creano una nuova subkey che ipoteticamente potrebbe accogliere i dati dei miei programmi. Quindi, lo ripeto, modificare o cancellare questi dati non influisce sul funzionamento di Windows. Gli esempi che seguono utilizzano due metodi diversi per accedere al registry. Uno, più classico, utilizza l'oggetto “Wscript.Shell”. L'altro utilizza WMI (Windows Management Instrumentation), che permette interrogazioni più elaborate. Per valutare cosa fanno questi script è opportuno aprire con regedit la chiave che si sta modificando ed avviare i vbs. Con il comando “aggiorna” di regedit apparirano le nuove chiavi create, i nuovi valori delle voci del registry, spariranno le chiavi ed i valori cancellati. Per scoprire cosa altro si può fare con WMI consglio di scaricare il programma “Scriptomatic” dal sito Microsoft. E' una applicazione HTM (una pagina html salvata con estensione hta, che non ha limitazioni di sicurezza). Questo programma può generare script di interrogazione su moltissime variabili dell'ambiente Windows, sui programmi installati, ecc. Per sapere sommariamente cosa è WMI, cercare il file WMIC.HLP nella cartella Windows\help. Più in generale, per scrivere altrove nel registry è necessario essere certi di quello che si sta facendo. Magari tenendo nota delle modifiche effettuate in modo da poter ripristinare la situazione precedente. Cercando sul web “registry hacks” si trovano alcuni siti con spunti per migliorare le prestazioni dei programmi. Per concludere questa introduzione, devo dire che a me non piacciono molto i programmi che scrivono nel registry i propri dati. Preferisco il vecchio metodo del file ".INI". Insomma, se il mio programma deve salvare qualche informazione sulle impostazioni dell'utente, preferisco creare un file nella stessa cartella con tutto quello che serve. In questo modo non appesantisco il registro con i miei dati e non lo lascio sporco se il programma viene rimosso. Per avere un elenco delle chiavi sotto, ad esempio, HKEY_CURRENT_USER fino a qualche anno fa era necessario usare tools di terze parti. Ora con WMI si può interrogare Windows ed ottenere un array delle chiavi disponibili.
Otterrete “hardware”, “security”, “software” e altre voci. Il metodo EnumKey popola un vettore arrSubkeys con i nomi delle chiavi sottostanti a HKEY_LOCAL_MACHINE. Specificando un percorso, come il primo strKeyPath bloccato da un commento nell'esempio, si mostrano le voci al di sotto di quella determinata chiave. Provate anche strKeyPath = "SOFTWARE\Microsoft” Con questo metodo si ottengono le subkeys, ma non i valori delle voci eventualmente contenuti. Per questo bisogna andare oltre nella lettura di questa pagina. Nel paragrafo precedente abbiamo visto come elencare le sottochiavi. Una volta individuata una sottochiave, è possibile leggerne le voci ed i relativi valori. L'esempio elenca le voci della
sottochiave "outlook express". I risultati comprendono, nel mio caso,
cinque voci diverse. La prima è "MediaVer", che contiene la
versione di Outlook Express installata sulla mia macchina. '**************************************************************** Fino ad ora abbiamo imparato a scorrere l'albero del registry per cercare voci e valori esistenti. Ora vediamo come creare una propria subkey e scriverci una voce con i relativi valori. Questi metodi permettono anche di sovrascrivere un valore esistente. Questo primo esempio usa il metodo regwrite dell'oggetto wscript.shell. Se il parametro termina con un "\" sarà creata una subkey. Se il parametro non termina con la "\" sarà creata una voce, nel qual caso è necessario indicarne anche il valore ed il tipo. I tipi permessi sono "REG_SZ" (stringa), REG_EXPAND_SZ (stringa), REG_DWORD (intero), REG_BINARY (intero). '**************************************************************** E' possibile creare una chiave anche usando WMI. In questo esempio vediamo come. '**************************************************************** Quello che abbiamo visto fino ad ora può essere utile per inserire dei "trucchi" nel registro, per abilitare o disabilitare determinate caratteristiche, ecc. Oppure per scrivere i propri dati nel registry. Ma come si fa a leggere il valore di una voce? Con il metodo RegRead di Wscript.Shell. Nell'esempio c'è anche una semplice gestione delle eccezioni per rilevare l'eventuale inesistenza della voce che si tenta di leggere. '**************************************************************** Ma per leggere il contenuto di una voce di registro c'è anche una proprietà del modello ad oggetti di Word (non di Excel, per qualche strano motivo). La funzione ha questa sintassi: PrivateProfileString(FileName As String, Sezione As String, Chiave As String) As String Il FileName può essere un file ".INI". Se è una stringa nulla si accede al registro di configurazione. La Sezione è la subkey del registry oppure la sezione tra parentesi quadre di un file INI. La Chiave è la voce cercata. L'esempio riportato sotto è equivalente alla prima parte dell'esempio precedente che usa Wscript.Shell. Set objWord = CreateObject("Word.application") Per finire, una cosa molto rara. I programmi lasciano spesso il registro sporco con sottochiavi e valori non più utili. Ecco come fare a rimuovere i dati che non servono più. Nello script si elimina la subkey che ho creato con gli esempi precedenti. Per scrivere o cancellare da altri rami del registry (qui è in HKEY_LOCAL_MACHINE), fare riferimento alle costanti presentate nel primo esempio. Questo codice elimina tutta la subkey "Cenati", compresi eventuali valori ed eventuali sybkey. Non è quindi necessario svuotare la chiave prima di cancellarla. Occhio a non cancellare qualcosa di livello più alto! '**************************************************************** Questo altro esempio cancella una voce del registry utilizzando wscript.shell anzichè WMI. Se il percorso da cancellare finisce con la barra "\" significa che si vuole cancellare una subkey. Se non finisce con "\" si cancella una chiave. '**************************************************************** Esporta una chiave di registro Quello che segue, se l'avessi scritto prima, vi avrebbe evitato di leggere tutta la pagina... Il programma RegEdit serve per curiosare tra le chiavi di registro. Ma si può usare anche per esportare in un file .REG una o più chiavi. In questo modo si può scrivere nel registro semplicemente con un doppio click sul .REG. Ad esempio potreste salvare in questo modo le informazioni sulle connessioni internet, oppure sugli account di posta di Outlook Express. RegEdit può creare un file REG anche specificando dalla riga di comando un apposito parametro. Ad esempio (grazie a Fosco che mi ha scritto di questa possibilità): regedit /e Save.reg (esporta TUTTO il Registry in Save.reg) Esempio Giovanni Cenati
|
|
|
|
© Cenati Giovanni 2004/2010 - http://digilander.libero.it/Cenati - Reventlov at Katamail com
|
|