2011-12-26 15 views
1

ディレクトリ/ディスクを監視し、ネットワーク共有フォルダから削除されたときに削除されたファイル/フォルダをごみ箱に移動するプログラムをコーディングしようとしています。ネットワーク共有からファイル/フォルダをリサイクルする方法

私はファイル/フォルダが削除されたときに動作していますが、削除を取り消してファイルをごみ箱に移動する必要があります。 How to Move files to the recycle bin

FileSystemWatcher fsw = new FileSystemWatcher(); 

private void frmMain_Load(object sender, EventArgs e) 
{ 
    StartWatcher("X:\\Virtuals\\"); 
} 
private void StopWatcher() 
{ 
    if (fsw != null) 
     try 
     { 
      fsw.EnableRaisingEvents = false; 
      fsw.Dispose(); 
      fsw = null; 
     } 
     catch { } 
} 
private void StartWatcher(string path) 
{ 
    StopWatcher(); 

    FileSystemWatcher fsw = new FileSystemWatcher(); 
    fsw.Path = Path.GetDirectoryName(path); 
    fsw.Filter = Path.GetFileName(path); 
    fsw.NotifyFilter = NotifyFilters.LastAccess | 
    NotifyFilters.LastWrite | NotifyFilters.FileName 
    | NotifyFilters.DirectoryName; 
    fsw.Deleted += new FileSystemEventHandler(OnDeleted); 
    fsw.EnableRaisingEvents = true; 
} 
private void OnDeleted(object source, FileSystemEventArgs e) 
{ MessageBox.Show("File deleted: " + e.FullPath); } 

答えて

1

FileSystemWatcherはファイルの後にイベントを発生させ、実際に、削除された変更または作成したので、削除イベント後にコピーを行うには後半にit'sされています。私はここでごみ箱には、ファイル/フォルダを移動する方法を見つけます上昇する。 FileSystemWatcherを使用して操作をキャンセルする可能性はありません。可能であれば、低レベルのAPIを使用することで解決できます(ただし、どのように、どのようにしたらよいか分かりません)。

3

FileSystemWatcherはあなたの仕事であなたを助けません。これを行う適切な方法は、ファイルの削除要求を傍受し、ファイルをごみ箱に移動するファイルシステムフィルタドライバを使用することです。独自のフィルタドライバを作成することができます(低レベルのカーネルモード開発の知識が必要です)。または、ユーザーモード(.NETでも)で仕事をするCallbackFilter製品を提供します。

関連する問題