[DUG] registry caching?
Antony Simmonds
antony.simmonds at manukau.ac.nz
Sat Aug 29 20:59:57 NZST 2009
You could try the registry logging functionality of Sysinternals Process
Monitor, and log what registry activity is actually happening.
More information and download from
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
Ross Levis wrote:
> I hope someone can help.
>
> I have an app where the installer sets an XP compatibility mode registry
> entry during installation. Don't ask why but it is generally required.
>
> As the app loads after installation, it checks some hardware requirements to
> see if XP compatibility mode needs to be switched off. If so, the registry
> entry is deleted and the program then needs to be restarted, which I want to
> do automatically.
>
> I have a helper app which I load just before terminating the main app. The
> helper app then reloads the main app after a 2 second sleep.
>
> However, the result is that the program is still loading in compatibility
> mode even though the registry entry is deleted well before it loads.
>
> I have LazyWrite disabled on the registry change, so it is instantly
> updated. I tried a massive 15 second sleep in the helper app, so the main
> app is closed for 15 seconds before reloading, yet it still loads as if the
> registry entry is still there.
>
> If I terminate the app and load it manually, then it's always correct! I
> don't understand this. Why would loading the app manually be any different
> to loading it from another app?
>
> I'm using CreateProcess with CREATE_NEW_PROCESS_GROUP to load the helper app
> and to load the main app again. I tried ShellExecute with no difference.
>
> Is there some way to make this work automatically?
>
> The only method I can adopt at this stage is to popup a message to ask the
> user to load the program manually, which is not user friendly.
>
> Many thanks,
> Ross.
>
>
More information about the Delphi
mailing list