有谁知道在系统重启时告诉哪些文件会被删除或修改?与更新系统时一样,系统要求重新启动,因为某些文件被系统阻止,需要更换或修改。我需要制作一个脚本,告诉我哪些文件将在启动时被删除或修改。
答案 0 :(得分:3)
MoveFileEx州的文档:
说明
如果
dwFlags
参数指定MOVEFILE_DELAY_UNTIL_REBOOT
,则MoveFileEx如果无法访问注册表,则会失败。该函数将在重新启动时重命名的文件的位置存储在以下注册表值中:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
此注册表值的类型为
REG_MULTI_SZ
。每个重命名操作都存储以下以NULL结尾的字符串之一,具体取决于重命名是否为删除:
szDstFile\0\0
szSrcFile\0szDstFile\0
字符串
szDstFile\0\0
表示要在重新启动时删除文件szDstFile
。字符串szSrcFile\0szDstFile\0
表示重新启动时szSrcFile
将重命名为szDstFile
。
您可以使用Win32::TieRegistry查询Windows注册表:
#!/usr/bin/env perl
use strict; use warnings;
use Const::Fast;
use Win32::TieRegistry;
use YAML;
const my $REG_DELIMITER => '/';
$Registry->Delimiter($REG_DELIMITER);
my $key = join $REG_DELIMITER, qw(
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Control
Session Manager
PendingFileRenameOperations
);
print Dump $Registry->{$key}