Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Ciao : )
Volevo sapere quali funzioni mi permettono di gestire il registro di windows.
In pratica dovrei aggiungere ed eliminare ricorsivamente delle chiavi.
Fino ad ora ho usato una soluzione piuttosto "sporca", ovvero creavo un file temporaneo con le chiavi da inserire per poi passare il tutto ad un system("regedit ...")...
Quali funzioni devo andare a vedere ? Documentazione adatta a chi non ha mai usato windows.h ?
No, non ci sono proprio, sto impazzendo
Ho creato in HKEY_LOCAL_MACHINE la chiave prova, e riesco tranquillamente ad eliminarla con tutti i valori che contiene, ma se dentro prova creo una sottochiave non riesco piu' ad eliminarla.
Guardando http://msdn2.microsoft.com/en-us/library/ms724235.aspx ci sarebbe la soluzione ma:
- vorrei qualcosa di piu' semplice: non mi piace usare codice senza capirlo a fondo , e quello a fondo non riesco a capirlo
- strsafe.h non ce l'ho e non voglio ( e posso ) installare librerie a parte
Per cancellare una chiave con sottochiavi devi prima cancellare tutte le sottochiavi. Devi cioè prima attraversare tutto l'albero delle chiavi fino alle foglie, cancellarle tutte e poi risalire al livello superiore e ripetere la procedura.
Quel codice mi sembra buono. E' un algoritmo ricorsivo. La funzione RegDelnodeRecurse richiama se stessa, utilizzando lo stack per attraversare in profondità l'albero delle chiavi.
Ad ogni chiamata la funzione scende di un livello.
1) Se ci sono sottochiavi chiama se stessa per ogni sottochiave.
2) Se non ci sono sottochiavi si è arrivati in una foglia che viene cancellata.
Il risultato che si ha è che la cancellazione di una chiave avviene solo dopo che tutte le sue sottochiavi sono state cancellate.
Ovviamente puoi riscrivere l'algoritmo in forma iterativa (senza far uso della ricorsione) ma di solito è più facile e più leggibile scrivere algoritmi ricorsivi.