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.