Oppure

Loading
17/02/11 23:11
u064241
Sono iscritto al vostro sito pierotofy.it/ che trovo interessantissimo soprattutto per me che ho iniziato da pochissimo a destreggiarmi con la programmazione in C magari, poi, evolvendo passerò a quella ad oggetti.

Faccio il sistemista e l'unione del mio mondo con quello della programmazione potrebbe essere un ottimo connubio, almeno secondo me, ho trovato i codici sorgente (vedi esempi, networking e quant’altro) utilissimi.

A questo punto mi scuso per il disturbo e vengo al punto: volevo chiedervi una consulenza di linguaggio C.

Dovrei risolvere su windows 7 (ma anche i suoi predecessori) uno dei tanti bachi che lo affliggono (support.microsoft.com/kb/…) avevo pensato di scrivere due linee di codice per la gestione delle chiavi di registro solo che in C non sono previste librerie di quel genere o almeno io non le conosco.

Cercando su internet ho visto che in C++ esistono comandi per la ricerca, modifica, aggiunta, ma mastico a malapena il C figuratevi il C++, quindi avevo pensato ad un sistema più macchinoso, trattando il file testo ottenuto dalla pipe dell’esempio sottostante.

Vi spiego cosa mi servirebbe.

Con il comando da shell di dos: REG QUERY "HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CurrentVersion\profilelist" /f *.bak > KB947242.txt cerco e scrivo in un file testo le chiavi che vanno cancellate

Un esempio potrebbe essere un file di testo tipo questo:

\n --> qui c’è un a capo
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CurrentVersion\profilelist\S-1-5-21-1528880063-3110720840-2128826722-1211.bak
Fine della ricerca: 1 corrispondenze trovate.

Sarebbe comodo cercare tutte quelle sottochiavi che hanno l’estensione .bak (da eliminare) il percorso è sempre lo stesso (HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CurrentVersion\profilelist\) cambia il nome della chiave ma non la sua estensione.

Una volta letto il file testo, sopra riportato, creerei un file batch tipo: REG DELETE "HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CurrentVersion\profilelist\S-1-5-21-1528880063-3110720840-2128826722-1211.bak" /f per eseguirlo con un system(); è macchinoso (per me) però non mi viene in mente altro.

Il miei problemi sono:

- come dico al programma di saltare la prima linea (\n) e leggere la successiva ?
- come posso prendere tutta la stringa "HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CurrentVersion\profilelist\S-1-5-21-1528880063-3110720840-2128826722-1211.bak" inserirgli REG DELETE all'inizio e /f alla fine della stringa ?
- e se le voci con estensione .bak (dopo \profilelist\) fossero più di una ?

Perdonate la richiesta banale, ma voi come lo scrivereste ?

Se poi ci sono funzioni già pronte in C++ vanno bene lo stesso.
Grazie 1000 a chiunque voglia aiutarmi.
aaa
18/02/11 11:41
carlduke
dovresti usare le normali funzioni di lettura e scrittura su file del C..
prova a dare un'occhiata a questo google.it/… , o cerca su google.
Comunque ti consiglio il supporto di un buon manuale cartaceo, di solito sono quelli che spiegano meglio
aaa