Как Windows премахва заключените файлове при следващото рестартиране, когато деинсталирате програма? Може би с някакъв планиран процес?
Как Windows премахва заключените файлове при следващото рестартиране, когато деинсталирате програма?
Отговори (1)
Процесът на деинсталиране използва MoveFileEx
a> със зададен флаг MOVEFILE_DELAY_UNTIL_REBOOT
, който показва, че операцията не трябва да се извършва до рестартиране. Оставянето на параметъра lpNewFileName
NULL показва, че файлът трябва да бъде изтрит:
Ако dwFlags указва MOVEFILE_DELAY_UNTIL_REBOOT и lpNewFileName е NULL, MoveFileEx регистрира файла lpExistingFileName, който да бъде изтрит, когато системата се рестартира. Ако lpExistingFileName се отнася до директория, системата премахва директорията при рестартиране само ако директорията е празна.
Информацията за MOVEFILE_DELAY_UNTIL_REBOOT
гласи:
MOVEFILE_DELAY_UNTIL_REBOOT
Системата не премества файла, докато операционната система не се рестартира. Системата премества файла веднага след изпълнението на AUTOCHK, но преди да създаде файлове за пейджинг. Следователно този параметър позволява на функцията да изтрива пейджинг файлове от предишни стартирания
Горната функция записва запис в системния регистър, който се обработва автоматично по време на стартиране:
Функцията съхранява местоположенията на файловете, които трябва да бъдат преименувани при рестартиране, в следната стойност на системния регистър:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations