2010年10月20日 星期三

HKLM\Init and database status

On the post Enumerate Database Volumes, we saw a lot of database volumes has been mounted and locked by some applications or services. I am trying to find a position in boot up sequence to get less database locked as I can.

This is the volumes mounted when boot up finished:

\Documents and Settings\Default.vol
\ReplStrorVol
\mxip_notifi.vol
\mxip_swmgmt.vol
\cemail.vol
\mxip_system.vol
\mxip_lang.vol

I modified my enumeration application to output the enumeration to a file. Cause this application should only use database and file system API, I hope it can be executed very early in boot sequence.

And I find the first place to try: HKLM\Init. The applications registered in this registry will be run in the lastest step of filesys.exe. At that moment, the database and file system APIs should be ready. So I start my testing.

I put my execution file in \Windows folder, and add a registry in HKLM\ini as “LunchXX” with my application file name as value.

First, let me list my KHLM\Init:

Launch4 sdpready.exe
Launch19 initvmmap.exe
Launch20 device.exe
Launch30 gwes,exe
Launch50 shell32.exe
Launch60 services.exe
Launch70 connmgr.exe
Launch82 ShellNotification.exe

This is not a full list, but enough for my description.

First try, I think device.exe loads drivers, the system state should be ready to execute my application. So I made “Lunch35” as my key name, and them, the application run fail, I don’t know why, but just cannot see the output file.

Second try, I want to make sure my application can be run in HKLM\init. So I modify the key name to “Launch135”. And great, it can be run, and the output is:

\Documents and Settings\Default.vol
\ReplStrorVol
\mxip_notifi.vol
\mxip_swmgmt.vol
\cemail.vol

Another great news, some volumes missed. Then I try to put my test application on “Launch65”, and the cmail.vol missed, too.

\Documents and Settings\Default.vol
\ReplStrorVol
\mxip_notifi.vol
\mxip_swmgmt.vol

And then when I try to run it earlier at “Launch55”, it fail to run again.

According my HKLM\init list, the item between 55 and 65 is “Launch60: services.exe”. Seems my application need to wait for all service ready. I am depressed about that. Cause I think my application only use database and file system APIs, I hope it can be run earlier then that.

So, until now, I have four database volumes need to study about how to release them for backup and restore operation.

沒有留言:

張貼留言