Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Aiuto primi passi in C, Please
Forum - C/C++ - Aiuto primi passi in C, Please

Avatar
u064241 (Normal User)
Newbie


Messaggi: 5
Iscritto: 28/06/2009

Segnala al moderatore
Postato alle 0:11
Venerdì, 18/02/2011
Sono iscritto al vostro sito http://www.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 (http://support.microsoft.com/kb/947242) 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.

PM Quote
Avatar
carlduke (Member)
Pro


Messaggi: 153
Iscritto: 29/01/2011

Segnala al moderatore
Postato alle 12:41
Venerdì, 18/02/2011
dovresti usare le normali funzioni di lettura e scrittura su file del C..
prova a dare un'occhiata a questo http://www.google.it/url?sa=t&source=web&cd=5&ved=0CEkQFjA ... , o cerca su google.
Comunque ti consiglio il supporto di un buon manuale cartaceo, di solito sono quelli che spiegano meglio


Il mio canale: http://www.youtube.com/user/MrDukeCarl

tecnologia e programmazione!
PM Quote