Partager via


IBackgroundCopyJob3 ::SetFileACLFlags, méthode (bits2_0.h)

Spécifie les informations de propriétaire et de liste de contrôle d’accès à gérer lors de l’utilisation de SMB pour télécharger ou charger un fichier.

Syntaxe

HRESULT SetFileACLFlags(
  [in] DWORD Flags
);

Paramètres

[in] Flags

Indicateurs qui identifient le propriétaire et les informations de liste de contrôle d’accès à gérer lors du transfert d’un fichier à l’aide de SMB. Les appels suivants à cette méthode remplacent les indicateurs précédents. Spécifiez 0 pour supprimer les indicateurs du travail. Vous pouvez spécifier n’importe quelle combinaison des indicateurs suivants.

Valeur Signification
BG_COPY_FILE_OWNER
Si cette option est définie, les informations de propriétaire du fichier sont conservées. Sinon, l’utilisateur qui appelle la méthode Complete est propriétaire du fichier.

Vous devez disposer de SeRestorePrivilege pour définir cet indicateur. Le groupe administrateurs contient le privilège SeRestorePrivilege.

BG_COPY_FILE_GROUP
Si cette option est définie, les informations de groupe du fichier sont conservées. Sinon, BITS utilise le groupe principal du propriétaire du travail pour affecter les informations de groupe au fichier.

Vous devez disposer de SeRestorePrivilege pour définir cet indicateur. Le groupe administrateurs contient le privilège SeRestorePrivilege.

BG_COPY_FILE_DACL
S’il est défini, BITS copie les ACL explicites du fichier source et les ACL pouvant hériter du dossier de destination. Dans le cas contraire, BITS copie les ACL pouvant être héritées du dossier de destination. Si le dossier de destination ne contient pas d’AE héritées, BITS utilise la liste DACL par défaut du compte du propriétaire.
BG_COPY_FILE_SACL
S’il est défini, BITS copie les ACL explicites du fichier source et les ACL pouvant hériter du dossier de destination. Dans le cas contraire, BITS copie les ACL pouvant être héritées du dossier de destination.

Vous devez disposer de SeSecurityPrivilege sur les ordinateurs locaux et distants pour définir cet indicateur. Le groupe administrateurs contient le privilège SeSecurityPrivilege.

BG_COPY_FILE_ALL
Si cette option est définie, BITS copie les informations de propriétaire et de liste de contrôle d’accès. Cela équivaut à définir tous les indicateurs individuellement.

Valeur retournée

Cette méthode retourne les valeurs HRESULT suivantes, ainsi que d’autres.

Code de retour Description
S_OK
Définissez correctement les indicateurs.
BG_E_INVALID_STATE
Vous devez appeler cette méthode avant que le travail passe à l’état BG_JOB_STATE_TRANSFERRED .
E_INVALIDARG
Le paramètre Flags contient un indicateur qui ne figure pas dans la liste.

Remarques

Ces indicateurs s’appliquent aux noms de fichiers distants qui spécifient le protocole SMB. BITS ignore les indicateurs pour les transferts HTTP.

BITS propage les horodatages de fichier et les attributs (et non les attributs étendus) pour les fichiers SMB.

BITS applique les informations de propriétaire et de liste de contrôle d’accès au fichier au moment où le transfert de fichier est terminé, et non quand il crée le fichier de transfert temporaire. BITS ne spécifie pas de descripteur de sécurité lorsqu’il crée le fichier de transfert temporaire (le fichier hérite des informations de liste de contrôle d’accès du répertoire de destination). Si les données transférées sont sensibles, l’application doit spécifier une liste de contrôle d’accès appropriée sur le répertoire de destination pour empêcher tout accès non autorisé.

Pour vous assurer que les informations de propriétaire et de liste de contrôle d’accès appropriées sont définies sur tous les fichiers du travail, appelez cette méthode après avoir créé le travail et avant d’appeler la méthode IBackgroundCopyJob ::Resume . Sinon, les fichiers transférés avant la définition des indicateurs ne contiennent pas les informations de propriétaire et de liste de contrôle d’accès appropriées.

Cette méthode est modélisée d’après la commande XCopy DOS.

Les informations sur le propriétaire et la liste de contrôle d’accès ne sont pas conservées si vous les téléchargez sur un système de fichiers FAT.

Si l’utilisateur ne dispose pas de privilèges sur les ordinateurs locaux et distants pour copier les informations de propriétaire ou de liste de contrôle d’accès, BITS place le travail dans un état d’erreur temporaire et définit le code d’erreur sur E_ACCESSDENIED.

Exemples

L’exemple suivant montre comment appeler la méthode SetFileACLFlags pour spécifier les informations de propriétaire et de liste de contrôle d’accès à conserver avec les fichiers téléchargés par BITS. L’exemple suppose que la variable IBackgroundCopyJob , pJob, est valide, pointe vers un nouveau travail et est suspendue.

     IBackgroundCopyJob *pJob;
     IBackgroundCopyJob3 *pJob3 = NULL;

     //Need to query the IBackgroundCopyJob interface for an IBackgroundCopyJob3
     //interface pointer. The IBackgroundCopyJob3 interface contains the SetACLFlags method.
     hr = pJob->QueryInterface(__uuidof( IBackgroundCopyJob3 ), (void**)&pJob3;);
     if (S_OK == hr)
     {
          pJob->Release(); //No longer need the IBackgoundCopyJob interface pointer.

          //Copy the group and DACL information for each file.
          hr = pJob3->SetACLFlags(BG_COPY_FILE_GROUP | BG_COPY_FILE_DACL);
          if (FAILED(hr))
          {
               //Handle error.
          }

          ... //Add one or more files and resume the job.
          pJob3->Resume();

          //When done, release the interface pointer.
          pJob3->Release();
     }
     else
     {
          //Handle error. QueryInterface will return E_NOINTERFACE if the version of BITS
          //running on the computer is less than BITS 2.0.
     }

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista, Windows XP avec SP2 KB842773 sur Windows Server 2003 et Windows XP
Serveur minimal pris en charge Windows Server 2008, Windows Server 2003 avec SP1
Plateforme cible Windows
En-tête bits2_0.h (include Bits.h)
Bibliothèque Bits.lib
DLL BitsPrx3.dll

Voir aussi

IBackgroundCopyJob3

IBackgroundCopyJob3 ::GetFileACLFlags