My turn to chime in, I have done a fair bit of reboot processing stuff.. first here is what msdn says
If the dwFlags parameter specifies MOVEFILE_DELAY_UNTIL_REBOOT, MoveFileEx stores the locations of the files to be renamed at reboot in the following registry value:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
The function fails if it cannot access the registry.
The PendingFileRenameOperations value is of type REG_MULTI_SZ. Each rename operation stores a pair of NULL-terminated strings. The system uses these registry entries to complete the operations at reboot in the same order that they were issued. For example, the following code fragment creates registry entries that delete szDstFile and rename szSrcFile to be szDstFile at reboot:
MoveFileEx(szDstFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT); MoveFileEx(szSrcFile, szDstFile, MOVEFILE_DELAY_UNTIL_REBOOT);
The system stores the following entries in PendingFileRenameOperations:
szDstFile\0\0 szSrcFile\0szDstFile\0\0
Because the actual move and deletion operations specified with the MOVEFILE_DELAY_UNTIL_REBOOT flag take place after the calling application has ceased running, the return value cannot reflect success or failure in moving or deleting the file. Rather, it reflects success or failure in placing the appropriate entries into the registry.
The system deletes a directory tagged for deletion with the MOVEFILE_DELAY_UNTIL_REBOOT flag only if it is empty. To ensure deletion of directories, move or delete all files from the directory before attempting to delete it. Files may be in the directory at boot time, but they must be deleted or moved before the system can delete the directory.
Windows 95 and Windows 98: The MoveFileEx function is not supported. To rename or delete a file at reboot, use the following procedure.
To rename or delete a file on Windows 95 and Windows 98 Check for the existence of the WININIT.INI file in the Windows directory. If WININIT.INI exists, open it and add new entries to the existing [rename] section. If the file does not exist, create the file and create a [rename] section. Add lines of the following format to the [rename] section: DestinationFileName=SourceFileName
Both DestinationFileName and SourceFileName must be short filenames. To delete a file, use NUL as the value for DestinationFileName.
The system processes WININIT.INI during system boot. After WININIT.INI has been processed, the system names it WININIT.BAK. <<
So we have exactly what we should do.
This i have seen alot, andreas (and others) are working on a utility that will process this wininit file. I have talked to alexandre and we both agree that it is something that probably should not be in wine itself.
-aric
Malte Starostik wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Am Wednesday 30 January 2002 21:41 schrieb Uwe Bonnes:
> "Francois" == Francois Gouget [email protected] writes:
Francois> On Wed, 30 Jan 2002, Gerhard W. Gruber wrote:
... Francois> I believe that Windows stores the list of files to Francois> move/delete somewhere in the registry. We should probably do Francois> the same... It seems that adding keys in the registry would be Francois> better than creating new files in any case.
At least Win95 and decendants store the file in <windows>/wininit.ini.
Yes, because registry access isn't available yet when wininit.ini is handled during booting. That's what happens during the "Configuration files are being updated" ... "Done" (roughly translated from German, guess you know what I mean) while the boot logo is displayed. BTW, no idea why they call it "configuration files" :) Imagine kernel32, advapi or something else is being replaced...can't use the registry for it. The format of wininit.ini is pretty simple: ever line is like newname=oldname and causes the file named oldname to be renamed to newname. If newname is nul, the file is deleted.
Malte Starostik PGP: 1024D/D2F3C787 [C138 2121 FAF3 410A 1C2A 27CD 5431 7745 D2F3 C787] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org
iD8DBQE8WJWMVDF3RdLzx4cRApncAKCFLIv32C+97uaTRq4UfXpFYFBASQCfezGw R80SYovvkyrywtu94xj+PnU= =NmRY -----END PGP SIGNATURE-----