2010-10-20 5 views
3

Utilisation de .NET FileSystemWatcher http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx pour surveiller un répertoire complet de fichiers pour: Modifié; Créé; Supprimé Événements renommés.FileSystemWatcher - autorisations minimales requises sur les répertoires cibles?

Quels sont les droits minimum dont le compte exécutant FileSystemWatcher a besoin sur le répertoire qu'il regarde?

Il semble que ce serait READ mais je ne trouve pas cela documenté nulle part.

Merci

Répondre

3

L'API sous-jacente est ReadDirectoryChangesW. La seule chose mentionnée dans l'article MSDN Library est que le droit d'accès FILE_LIST_DIRECTORY est requis sur le handle de répertoire et le répertoire doit être ouvert avec l'option FILE_FLAG_BACKUP_SEMANTICS.

Le code du framework .NET est souvent utile. La méthode FileSystemWatcher.StartRaisingEvents privée() utilise ce code pour ouvrir la poignée de répertoire:

directoryHandle = NativeMethods.CreateFile(
    directory,         // Directory name 
    UnsafeNativeMethods.FILE_LIST_DIRECTORY, // access (read-write) mode 
    UnsafeNativeMethods.FILE_SHARE_READ | 
    UnsafeNativeMethods.FILE_SHARE_DELETE | 
    UnsafeNativeMethods.FILE_SHARE_WRITE,  // share mode 
    null,          // security descriptor 
    UnsafeNativeMethods.OPEN_EXISTING,   // how to create 
    UnsafeNativeMethods.FILE_FLAG_BACKUP_SEMANTICS | 
    UnsafeNativeMethods.FILE_FLAG_OVERLAPPED, // file attributes 
    new SafeFileHandle(IntPtr.Zero, false)); // file with attributes to copy 

Utilisez FILE_FLAG_OVERLAPPED uniquement pour les notifications asynchrones.

+0

Très bien, merci. – glaucon

+1

Selon les docs, vous avez également besoin de FILE_FLAG_BACKUP_SEMANTICS (http://msdn.microsoft.com/en-us/library/aa365465%28v=vs.85%29.aspx). –

4

Si le FileSystemWatcher est basé sur ReadDirectoryChangesW il a besoin:

  1. FILE_LIST_DIRECTORY sur le répertoire à surveiller
  2. Le privilège SeBackupPrivilege qui permet au titulaire de lire quoi que ce soit en contournant les contrôles d'accès. L'indication pour ceci est l'indicateur FILE_FLAG_BACKUP_SEMANTICS à CreateFile.

Ceci est documenté dans la description de ReadDirectoryChangesW lié ci-dessus.

Questions connexes