View Full Version : script che aggiunga una voce al registro di win
da questo (http://www.hwupgrade.it/forum/showthread.php?p=11423074#post11423074) 3d sono arrivato qui.... :)
...il mio problema è questo, devo aggiungere/modificare una voce al registro di win ogni volta che si fa lo shutdown del sistema, in modo del tutto trasparente all'utente.
mi hanno consigliato di utilizzare i criteri di gruppo...
giusto per dare uno spunto... :
esgui gpedit.msc
raggiungi la posizione configurazione computer\impostazioni di windows\script (avvio\arresto) e dal pannello a destra fai doppio clic su "chiudi sessione"
oppure raggiungi la stessa posizione ma parti da configurazione utente se vuoi che abbia effetto solo sull'utente attivo....
qui puoi aggiungere uno script che sarà avviato ogni volta che il pc si spegne...
non so suggerirti lo script per ora... intanto do lo spunto a te e magari a chi legge e sa suggerirti uno script adatto...
...il problema è che non ho idea di come si scriva uno scrip (che mi permetta di aggiungere una chiave al registro di win)
mi sapete aiutare ? :help:
Spaghetti
24-02-2006, 20:37
:) mi iscrivo perchè voglio saperlo anche io... :D :D
crick_pitomba
25-02-2006, 20:27
Scrivere uno script che scriva qualcosa nel registro è abbastanza semplice utilizzando l'oggetto "Shell"
le poche istruzioni necessarie sono queste
Sh = new ActiveXObject("WScript.Shell");
Sh.RegWrite( miachiave , miovalore [, tipo]);
miachiave può essere interpretata in due modi (cosa che fa automaticamente il motore di scripting)
faccio direttamente un esempio
se scrivo
HKEY_CURRENT_USER\pippo
aggiungo il campo pippo alla chiave HKEY_CURRENT_USER e a tale campo assegno il valore miovalore
se scrivo
HKEY_CURRENT_USER\pippo\
creo la nuova sottochiave pippo nella chiave HKEY_CURRENT_USER
e a tale chiave viene assegnato come valore predefinito il valore miovalore
attento perchè le stringhe sono utilizzate con sintassi c
quindi la stringa
HKEY_CURRENT_USER\pippo\
va indicato come
"HKEY_CURRENT_USER\\pippo\\"
esempio
Sh = new ActiveXObject("WScript.Shell");
Sh.RegWrite( "HKEY_CLASSES_ROOT\\*\\.mjs\\", "i miei script");
crea una nuova estensione di tipo "i miei script"
Scrivere uno script che scriva qualcosa nel registro è abbastanza semplice utilizzando l'oggetto "Shell"
le poche istruzioni necessarie sono queste
Sh = new ActiveXObject("WScript.Shell");
Sh.RegWrite( miachiave , miovalore [, tipo]);
miachiave può essere interpretata in due modi (cosa che fa automaticamente il motore di scripting)
faccio direttamente un esempio
se scrivo
HKEY_CURRENT_USER\pippo
aggiungo il campo pippo alla chiave HKEY_CURRENT_USER e a tale campo assegno il valore miovalore
se scrivo
HKEY_CURRENT_USER\pippo\
creo la nuova sottochiave pippo nella chiave HKEY_CURRENT_USER
e a tale chiave viene assegnato come valore predefinito il valore miovalore
attento perchè le stringhe sono utilizzate con sintassi c
quindi la stringa
HKEY_CURRENT_USER\pippo\
va indicato come
"HKEY_CURRENT_USER\\pippo\\"
esempio
Sh = new ActiveXObject("WScript.Shell");
Sh.RegWrite( "HKEY_CLASSES_ROOT\\*\\.mjs\\", "i miei script");
crea una nuova estensione di tipo "i miei script"
grazie davvero dell'aiuto :mano:
io devo creare una Dword XX in questa chiave "HKEY_CURRENT_USER\Software\Microsoft\ Windows\CurrentVersion\Policies\Explorer" con un valore YY
praticamente devo scrivere
Sh = new ActiveXObject("WScript.Shell");
Sh.RegWrite( "HKEY_CURRENT_USER\\Software\\Microsoft\\ Windows\\CurrentVersion\\Policies\\Explorer\\XX", "YY", DWORD);
giusto? DWORD devo metterlo o posso eliminarlo? o devo mettere qualcosa d'altro?
grazie per ora :)
crick_pitomba
25-02-2006, 20:54
grazie davvero dell'aiuto :mano:
io devo creare una Dword XX in questa chiave "HKEY_CURRENT_USER\Software\Microsoft\ Windows\CurrentVersion\Policies\Explorer" con un valore YY
praticamente devo scrivere
Sh = new ActiveXObject("WScript.Shell");
Sh.RegWrite( "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\XX", "YY", DWORD);
giusto? DWORD devo metterlo o posso eliminarlo? o devo mettere qualcosa d'altro?
grazie per ora :)
Se vuoi che il tipo venga trattato come intero, allora devi mettere certamente il tipo:
Sh.RegWrite( "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\XX", "YY", "REG_DWORD");
Se vuoi che il tipo venga trattato come intero, allora devi mettere certamente il tipo:
Sh.RegWrite( "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\XX", "YY", "REG_DWORD");
ok... capito tutto ;)
ti ringrazio veramente.... :cincin:
ps che cose si possono fare con gli script? dove posso trovare qualche sito che spieghi qualcosa... tanto per iniziare a capire.
ho cercato 1 po con google in questi gg ma non ho trovato mai niente di veramente interessante
crick_pitomba
25-02-2006, 21:22
di niente... era una sciocchezza :fiufiu:
Con gli script più o meno si può fare di tutto, l'importante è che ci sia un oggetto da qualche parte che esponga dei metodi da usare con gli script
Per quanto riguarda il modo per cominciare, non so se ci sia un sito con dei tutorial oppure delle spiegazioni base su come usare gli script.
comunque un buon punto di partenza potrebbe essere questo (http://msdn.microsoft.com/library/en-us/dnanchor/html/Scriptinga.asp)
di niente... era una sciocchezza :fiufiu:
Con gli script più o meno si può fare di tutto, l'importante è che ci sia un oggetto da qualche parte che esponga dei metodi da usare con gli script
Per quanto riguarda il modo per cominciare, non so se ci sia un sito con dei tutorial oppure delle spiegazioni base su come usare gli script.
comunque un buon punto di partenza potrebbe essere questo (http://msdn.microsoft.com/library/en-us/dnanchor/html/Scriptinga.asp)
ti ringrazio nuovamente ;)
Spaghetti
25-02-2006, 23:43
;) grazie innanzitutto
ho provato a scrivere uno script di prova che aggiungesse una chiave a caso per vedere se funziona ma mi è andata male...
ho scritto lo script con l'editor di testi e l'ho salvato con estensione vbs... quando lo eseguo mi dà errore sulla riga 1 carattere 23, questo è ciò che ho scritto nello script:
Sh = new ActiveXObject("WScript.Shell");
Sh.RegWrite( "HKEY_CURRENT_USER\\Software\\prova", "prova", "reg_dword");
cosa sbaglio?
se cambio l'estensione in .js e lo eseguo mi da errore sulla riga 2 al carattere 1 :mbe:
ho pensato che forse sbagliavo a cambire l'estensione o magari non possono essere eseguiti in questo modo... quindi ho provato ad usarlo con i criteri di gruppo nel modo in cui ho suggerito a fgiova... ma al momento dell'esecuzione la schermata rimane ferma e non va avanti... :mc:
cosa devo corregere nello script?
;) grazie innanzitutto
ho provato a scrivere uno script di prova che aggiungesse una chiave a caso per vedere se funziona ma mi è andata male...
ho scritto lo script con l'editor di testi e l'ho salvato con estensione vbs... quando lo eseguo mi dà errore sulla riga 1 carattere 23, questo è ciò che ho scritto nello script:
Sh = new ActiveXObject("WScript.Shell");
Sh.RegWrite( "HKEY_CURRENT_USER\\Software\\prova", "prova", "reg_dword");
cosa sbaglio?
se cambio l'estensione in .js e lo eseguo mi da errore sulla riga 2 al carattere 1 :mbe:
ho pensato che forse sbagliavo a cambire l'estensione o magari non possono essere eseguiti in questo modo... quindi ho provato ad usarlo con i criteri di gruppo nel modo in cui ho suggerito a fgiova... ma al momento dell'esecuzione la schermata rimane ferma e non va avanti... :mc:
cosa devo corregere nello script?
ma puoi scrivere in una dword "prova"??? non puoi metterci solo numeri visto che è un intero???
crick_pitomba
26-02-2006, 10:41
Prima di tutto l'estensione...
qui l'abitudine ha giocato un brutto scherzo: io preferisco scrivere gli script in jscript perchè ha una sintassi più simile al c, ma gli script possono essere scritti tranquillamente in visual basic...
questa è la sintassi per gli script in jscript, quindi l'estensione dovrebbe essere .js
per quanto riguarda l'errore come ha intuito giustamente fgiova devi impostare il tipo in modo coerente: non puoi scrivere una stringa in una dword
nel caso delle stringhe puoi omettere tranquillamente il tipo
il codice corretto è
Sh = new ActiveXObject("WScript.Shell");
Sh.RegWrite( "HKEY_CURRENT_USER\\Software\\prova", "prova", "REG_SZ");
è importante che il tipo sia scritto in lettera maiuscola
ecco i tipi supportati dal motore di scripting
REG_SZ: rappresenta il tipo stringa
REG_DWORD: è un intero di tipo dword
REG_BINARY: un valore binario
REG_EXPAND_SZ: una stringa che contiene un valore espandibile, ad esempio "%windir%\\regedit"
Spaghetti
26-02-2006, 12:41
:yeah:
magico!! adesso con estensione js funziona...
interessanti questi script... :D
possibile che tornerò a scrivere in questa sezione !
ciao e grazie :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.