2012-02-16 6 views
8

Sto modificando il registro di Windows tramite il mio software, che ad esempio sostituisce Shell (app Kiosk).Impedisci il ripristino completo dell'eliminazione delle modifiche al registro di sistema in WIN7?

Ora ho appena notato che in Win7 se si verifica un reset hardware (pulsante di ripristino o pulsante di alimentazione di 4 secondi) tutte le modifiche del Registro di sistema vengono perse.

In WinXP funziona comunque, anche dopo un hard reset le modifiche apportate sono ancora lì.

Devo fare qualcosa di speciale dopo aver modificato il registro in Win7 o forse anche una funzionalità di sicurezza Win7 integrata?

Per me sembra che le modifiche del Registro di sistema non siano finalizzate e appena salvate in memoria fino a quando non si verifica un reset software, potrebbe essere vero? Se è così, posso forzare un salvataggio in qualche modo?

+1

Sei in esecuzione software a 32 bit su 64 Windows? Forse è coinvolta la virtualizzazione del registro. Dove sono resettate quelle chiavi che hai impostato? – ixe013

+0

Oltre alla domanda di @ ixe013, la tua app è in esecuzione con un account Administrator quando modifica il registro? –

+0

Questo era vero, l'ho provato su un Win7 a 64 bit, anche se l'ho appena provato su una macchina a 32 bit, il risultato è lo stesso. Inoltre, sì sto usando un account amministratore. – user990767

risposta

12

Sembra che si desideri la funzione RegFlushKey.

La funzione RegFlushKey restituisce solo quando tutti i dati per l'hive che contiene la chiave specificata sono stati scritti nell'archivio del Registro di sistema sul disco.

La funzione RegFlushKey scrive i dati per altre chiavi nell'alveare che sono state modificate dall'ultimo lazy flush o avvio del sistema.

+0

Questo sembra davvero quello che voglio. Ho provato a google per un esempio su come usarlo, ma non è emerso nulla, potresti per favore darmi un esempio su come usarlo? – user990767

+0

@ user990767: Come stai modificando il registro? Stai usando le funzioni di WinApi (quindi hai un 'HKEY') o qualcosa incorporato in Delphi? –

+8

Ben: +1. @user, se stai usando Delphi's 'TRegistry', imposta' TRegistry.LazyWrite' su false prima di scrivere la tua chiave. Fa 'RegFlushKey' per te prima di chiudere la chiave. –

Problemi correlati