まず、長い質問で申し訳ありませんが、十分な詳細を提供したかったのです。
あらすじ:
Windows では、ネットワーク共有上で開かれたファイル ハンドルを強制的に閉じることができないようです。したがって、ネットワーク共有上で開いているファイルは、移動/名前変更/削除できません。Win7を使用しています。
質問:
誰でも私が間違っていることを確認できますか、またはこれが期待どおりであり、システムファイルハンドルを強制的に閉じることができないことを誰かが確認できますか (ファイルへのネットワーク共有アクセスに関連するものなど、常に pid 4 で)。
バックグラウンド:
ログ ファイルにアクセスするリモート ネットワーク クライアント ユーザーがいます。ログ ファイルが大きくなりすぎないように、ログ ファイルをローリングする必要があります。ファイルが使用中と報告されているため、ログ ファイルをロールできません。
問題を再現:
0)
管理者としてすべてを行う
1)
新しいディレクトリを作成して共有します
2)
新しいディレクトリにファイルを作成します
3)
ファイル共有を介して、MS Word のようなファイル ロックを取得する傾向があるものでファイルを編集します。Start / Run を実行し、\YourHostName と入力して、作成したファイル共有を選択し、ファイルに移動して Word で編集します。これは、ファイルをロックしているリモート ユーザー/ホストをシミュレートするためです。
4)
開いているファイル ハンドルを一覧表示します。以下の 2 を確認できます
C:>ハンドル C:\Log\MyLockedFile.txt
ハンドル v3.46 Copyright (C) 1997-2011 Mark Russinovich Sysinternals - www.sysinternals.com
システム pid: 4 タイプ: ファイル 3E64: C:\Log\MyLockedFile.txt システム pid: 4 タイプ: ファイル 5E48: C:\Log\MyLockedFile.txt
5)
ファイル ハンドルを閉じようとします。ここでは、閉じようとして失敗したことがわかります。
C:>ハンドル -c 3E64 -p 4
ハンドル v3.46 Copyright (C) 1997-2011 Mark Russinovich Sysinternals - www.sysinternals.com
3E64: ファイル (R--) C:\Log\MyLockedFile.txt システムのハンドル 3E64 を閉じます (PID 4)? (y/n) y ハンドルを閉じる際のエラー: ハンドルが無効です。
6)
ネットワーク ファイル ハンドルを一覧表示します。ここでは、ファイルに対して開かれているネットワーク共有が表示されます。
C:>openfiles /クエリ -v
情報: ローカルで開いているファイルを表示するには、システム グローバル フラグ 'maintain objects list' を有効にする必要があります。オープンファイル /? を参照してください。詳細については。
ローカル共有ポイントを介してリモートで開いたファイル:
タイプによってアクセスされるホスト名 ID #Locks Open Mode Open File (Path\executable) 14693W7N 67109233 myuser1 Windows 0 書き込み + 読み取り C:\Log\MyLockedFile.txt 14693W7N 495 myuser1 Windows 0 C:\Log\ の読み取り
7)
ファイルへのファイルハンドルを閉じる/切断します。ここでは動作しているようです
C:>openfiles /disconnect /a * /OP C:\Log\MyLockedFile.txt
成功: 開いているファイル "C:\Log\MyLockedFile.txt" への接続が終了しました。
8)
システム ファイル ハンドルは、削除しようとしてもアクティブなままです。
C:>ハンドル C:\Log\MyLockedFile.txt
ハンドル v3.46 Copyright (C) 1997-2011 Mark Russinovich Sysinternals - www.sysinternals.com
システム pid: 4 タイプ: ファイル 3E64: C:\Log\MyLockedFile.txt
9)
ファイルはまだ使用中のため、移動/名前変更できません
C:>move C:\Log\MyLockedFile.txt C:\Log\MyLockedFile.txt.newName 別のプロセスによって使用されているため、プロセスはファイルにアクセスできません。0 個のファイルが移動されました。