[C] gestire il registro windows

Area di discussione libera.

Moderatore: Staff

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.
Rispondi
Dani
Linux 4.x
Linux 4.x
Messaggi: 1447
Iscritto il: mer 26 apr 2006, 1:52
Desktop: gnome
Distribuzione: arch

[C] gestire il registro windows

Messaggio da Dani »

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 ? :lol:

grazie.

Avatar utente
whites11
Linux 4.x
Linux 4.x
Messaggi: 1147
Iscritto il: ven 30 set 2005, 13:54
Località: Udine

Messaggio da whites11 »


Dani
Linux 4.x
Linux 4.x
Messaggi: 1447
Iscritto il: mer 26 apr 2006, 1:52
Desktop: gnome
Distribuzione: arch

Messaggio da Dani »

Pare di si, grazie mille ;)

Dani
Linux 4.x
Linux 4.x
Messaggi: 1447
Iscritto il: mer 26 apr 2006, 1:52
Desktop: gnome
Distribuzione: arch

Messaggio da Dani »

No, non ci sono proprio, sto impazzendo :oops:
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

Suggerimenti ?

Avatar utente
gioco
Packager
Packager
Messaggi: 900
Iscritto il: dom 19 giu 2005, 0:00
Slackware: last stable
Località: in the court of the Wesnoth king
Contatta:

Messaggio da gioco »

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.

Dani
Linux 4.x
Linux 4.x
Messaggi: 1447
Iscritto il: mer 26 apr 2006, 1:52
Desktop: gnome
Distribuzione: arch

Messaggio da Dani »

Ma l'header strsafe.h dove si trova ? A dev-c++ manca, infatti non trova le funzioni come StringCchCopy . Dovrei installare sdk mi sa :?

Rispondi