Newsgroup: it.comp.programmare.win32
Titolo: file di registro di win xp pro

Salve ragazzi, vado subito al sodo. Ho bisogno tramite un programma
fatto in C++, di fare una copia dei file di registro di win xp pro
presenti nella cartella di sistema C:\windows\system32\config. Il file
di registro è "system", solo che essendo un file locato in memoria ed
in uso, windows m'impedisce la copia nonostante usi un richiamo alla
funzione API CopyFileEx().
C'è qualche modo in cui potrei agire per poterlo copiare in qualche
modo...oppure dovrei ricorrere all'assembly (che non conosco tranne
qualche cazzata), per poterlo copiare scrivendo qualcosa che venga
eseguita all'avvio nel boot sector ??
Ringrazio anticipatamente a chi potrà darmi attenzione.
Ciao
Davide.

Allora... L'unica soluzione "semplice e funzionale 100%" è probabilmente
usare il resback dal Resource Kit CD del Windows (prova cmq a guardare se
c'è nel CD del tuo windows).
Se no l'esportare semplicemente le chiavi non basta, perchè non esporteresti
i flag di sicurezza (ogni chiave può avere collegato chi può
accedervi/modificarla). Se no potresti usare l'ntbackup... Dovrebbe poter
esportare il registro. (prova a lanciare ntbackup dal prompt... Dovrebbe
avere anche dei parametri per controllarlo via command line)
--- bye

Dimenticavo, io non farei mai il restore del Registro se non sullo stesso
identico computer, sulla stessa identica installazione di Windows, e
possibilmente non a distanza di tempo da quando ho fatto il backup. Quindi
in pratica è più semplice fare un Restore Point :-) (ci dovrebbe essere
un'API per farli)
--- bye

Grazie mille..ma avrei bisogno di farlo da codice...ho letto la
funzione API RegSaveKey, l'ho usata e il file me lo salva, soltanto
che mi sono accorto che è vuoto!!!
Ecco un pezzo di codice...
LPSECURITY_ATTRIBUTES _str;
HKEY k;
CHAR RegCopyFile0New[] = "C:\\WINDOWS\\Backup_Reg\\system";
RegOpenKey(HKEY_CURRENT_USER, "Software", &k);
RegSaveKey(k, RegCopyFile0New, _str);
Come mai non funge per come dovrebbe ?

> RegSaveKey(k, RegCopyFile0New, _str);
put a null in _str.
--- bye

Nulla, stessa cosa!! :(((( Ma cristo ci sarà pur un modo per riuscire
questa funzione!!!
:((((((
1000 euro a chi me lo sarà indicare!!! :P


Non conosco le API per il Registry ma ho come il sospetto che 
RegCopyFileONew debba contenere un nome file valido (la cartella 
Backup_Reg è valida?).
M.
-- 
Quando avrete abbattuto l'ultimo albero, quando avrete pescato l'ultimo
pesce, quando avrete inquinato l'ultimo fiume, allora vi accorgerete che
non si puo' mangiare il denaro.  Proverbio Indiano

 questa funzione!!!
Occhio che se c'è già un file con lo stesso nome non funziona.
Hai provato a vedere perchè fallisce? Usa l'esempio del FormatMessage
dell'msdn (è basato su GetLastError+FormatMessage+MessageBox)
--- bye

Niente da fare...č pazzesco...ho verificato tutto quanto detto da
voi...vi giuro che vorrei proprio vedere fungere sta
funzione!!!Secondo me bisogna settare certi privilegi
(Windows NT/2000/XP: The calling process must have the SE_BACKUP_NAME
privilege enabled. For more information about privileges, see
Privileges. )
dal codice stesso...ho letto qualcosa ma non so esattamente come
agire....
Ragazzi...help!!!!!!!!!!!!!!:(((


Non dirmi... Non sei un utente amministratore!
--- bye

 ha scritto nel messaggio
news:4b3df85d.04031...@posting.google.com...


Sono amministratore sì, ecco la cosa mi spara in testa!!!Faccio parte
del gruppo administrator e siccome dovrebbe prendersi il token d'avvio
relativo a siffatto utente (con appunto i privilegi d'amministratore),
dovrebbe funzionarmi sta cazzo di funzione!!!Invece il file, lo copia
sì...Ma praticamente al suo interno non c'è un cazzo, 0 kb!!!
Mah...inviterei qualcuno se ha tempo e un pò di pazienza a fare
qualche prova e vedere se funge senza problemi...tanto per togliermi
di dosso l'idea che possa essera una mia sfiga!! :P
Fatemi sapere!!!
Davide.


Hai risposto al thread sbagliato. Allora... 5 minuti ed ho trovato la
risposta (a dimostrazione della tua pigrizia... Non l'ho dovuta cercare nei
meandri di quale oscuro testo... Ma solo nell'MSDN)
Ti serve il privilegio SE_BACKUP_NAME (come è chiaramente scritto nel
RegSaveKey... Occhio che sotto Win9x probabilmente non ti serve, e quindi
non devi fare nulla), che di base i programmi non hanno (SE_RESTORE_NAME per
restorare). Però se sei amministratore il programma se lo può
auto-appioppare! Cerca SE_BACKUP_NAME e troverai un programmino che si
chiama ModifyPrivilege... Fatto! (provato, collaudato, tutto!)
--- bye

Perfetto, provato e successo!!!:)Ho usato delle funzioni API per
abilitare il privilegio precedentemente detto (SE_BACKUP_NAME). Ad
ogni modo grazie mille per l'attenzione, ma cmq credo che non si
tratti di pigrizia nel mio caso ma semplicemente di poca esperienza
nel campo....sono neofita della programmazione win32 (e cmq anche in
generale!!) :)
Cmq grazie mille davvero :)
Ciao
Davis.

>Niente da fare...è pazzesco...ho verificato tutto quanto detto da

no l'amministratore non ha permessi la dentro ... devi prima aggiungere 
il permesso sui file ... disolito hanno solo i permessi di system ... ;-)
ciao