- Windows 10 Pro 22H2
- Windows 11 Pro 21H2
作成日時
些か疚しい事情からファイルの作成日時を変更したい。これを実行に移すにはPowerShellでSet-ItemProperty
コマンドを用いる。作成日時に工夫を凝らしたいファイルはこういう具合である。
此れを1973年4月1日の0時0分0秒に作成したことにするなら、下記のようにコマンドを実施する。属性名CreationTime
で変更の対象をファイルの作成日時とする。
> Set-ItemProperty .\機密.txt -Name creationtime -Value "1973-04-01 00:00:00"
するとこれこのとおり、指示した日時へと変更される。
更新日時
辻褄を合わせるために更新日時へも手を加えるなら属性名をLastWriteTime
にセットしてこうである。
> Set-ItemProperty .\機密.txt -Name lastwritetime -Value "1995-01-17 05:46:42"
アクセス日時
アクセス日時を変更する場合はLastAccessTime
を指定すればよろしいが、環境によってはコマンドは正常終了しているのに変化が見られなかった。
> Set-ItemProperty .\機密.txt -Name lastaccesstime -Value "2019-05-01 12:34:56"
どうも「最終アクセス日時の更新」という設定が有効になっているといけない。これはdisableLastAccess
というパラメータが司っている。
fsutil
コマンドで以ってこれを変更し、無効にできるようである。あとから元の設定に戻すために、まずは現在の設定値を把握しておく。
> .\fsutil.exe behavior query disablelastaccess DisableLastAccess = 2 (システム管理、最終アクセス日時の更新が有効)
次いで管理者としてコマンドプロンプト、若しくはPowerShellを起動する。そうして下に掲げるコマンドを実行する。
> .\fsutil.exe behavior set disablelastaccess 3 DisableLastAccess = 3 (システム管理、最終アクセス日時の更新が無効) この操作は直ちに有効になります (再起動は不要です)
それから改めてSet-ItemPropertyコマンドでアクセス日時の変更を試みると首尾よく成功した。気が済んだらdisableLastAccessは元の値へと戻しておく。
なおdisableLastAccessは0~3の値を取るようでそれぞれ次のような内容であるから「1」にセットしても最終アクセス日時の更新を無効にできそうな情勢であった。
これで一通り日時にまつわる細工はできたが、この他PowerShellトランスクリプションが有効になっていると監査の際に実行者や設定内容が詳らかになってしまうから、併せて工夫しなければならない。