1

システムの再起動時にどのファイルが削除または変更されるかを知る方法を知っている人はいますか? システムを更新するときと同様に、一部のファイルがシステムによってブロックされ、それらを置換または変更する必要があるため、システムは再起動を要求します。起動時に削除または変更されるファイルを通知するスクリプトを作成する必要があります。

4

2 に答える 2

3

MoveFileExのドキュメントには次のように記載されています。

備考

dwFlagsパラメータに が指定されている場合、レジストリにアクセスできない場合MOVEFILE_DELAY_UNTIL_REBOOTMoveFileExは失敗します。この関数は、再起動時に名前を変更するファイルの場所を次のレジストリ値に格納します。

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を示します。szSrcFileszDstFile

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}
于 2012-06-28T22:18:10.150 に答える