Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les tâches sont inscrites et exécutées dans un contexte de sécurité spécifique. Les utilisateurs peuvent créer des applications qui inscrivent, mettent à jour, suppriment ou exécutent des tâches, mais l’utilisateur doit fournir les informations d’identification appropriées lorsqu’une tâche est inscrite et l’application doit s’exécuter dans un processus avec les privilèges appropriés.
Spécification des informations d’identification
Vous pouvez spécifier le contexte de sécurité d’une tâche en spécifiant les informations d’identification dans les méthodes ITaskFolder ::RegisterTask ou ITaskFolder ::RegisterTaskDefinition (TaskFolder.RegisterTask ou TaskFolder.RegisterTaskDefinition pour le script) ou en affectant un principal à la propriété principal de ITaskDefinition (TaskDefinition.Principal pour le script). Si un principal est créé pour une définition de tâche, puis que la définition de tâche est inscrite à l’aide de la méthode RegisterTaskDefinition avec différentes informations d’identification spécifiées dans les paramètres de la méthode, les informations d’identification spécifiées dans la méthode RegisterTaskDefinition remplacent les informations d’identification dans le principal. Si un principal est créé pour une définition de tâche à l’aide de XML, puis que le code XML de la tâche est inscrit à l’aide de la méthode RegisterTask avec des informations d’identification différentes spécifiées dans les paramètres de méthode, les informations d’identification spécifiées dans la méthode RegisterTask remplacent les informations d’identification dans le principal.
Vous spécifiez un compte d’utilisateur ou un groupe lors de l’inscription d’une tâche ou de la spécification du principe d’une tâche. Le contexte de sécurité du compte d’utilisateur ou du groupe est utilisé pour le contexte de sécurité de la tâche. Dans ces méthodes et propriétés, vous définissez également le type d’ouverture de session. Le type d’ouverture de session est défini par l’une des constantes de l’énumération TASK_LOGON_TYPE .
Les tâches inscrites avec l’indicateur TASK_LOGON_PASSWORD ou TASK_LOGON_S4U ne démarrent que si l’utilisateur spécifié dispose de l’ouverture de session en tant que privilège Batch activé. Les administrateurs et les utilisateurs du groupe Opérateurs de sauvegarde ont ce privilège activé par défaut.
Lorsque vous appelez la méthode ITaskService ::Connect (TaskService.Connect pour le script), les appels de méthode suivants au service Planificateur de tâches utilisent les informations d’identification transmises à la méthode Connect . Il est important de prendre en compte lors de l’inscription de tâches avec un type d’ouverture de session interactif. Lorsque vous inscrivez une tâche avec le type d’ouverture de session égal à TASK_LOGON_INTERACTIVE_TOKEN et que la tâche n’a pas d’informations d’identification spécifiées dans la propriété Principal de la définition de tâche, spécifiée dans les paramètres de RegisterTaskDefinition ou spécifiée dans le code XML transmis à RegisterTask, la tâche est inscrite avec les informations d’identification de l’utilisateur qui a appelé la méthode Connect .
Sécurité du contrôle de compte d’utilisateur (UAC) pour les tâches
Le contrôle de compte d’utilisateur (UAC) permet aux utilisateurs d’exercer des fonctionnalités générales telles que l’exécution de programmes et l’enregistrement et la modification de données sans exposer de privilèges d’administration. Par défaut, une tâche s’exécute avec des privilèges de bas niveau lorsque l’UAC est activée. Les tâches peuvent spécifier qu’elles s’exécutent avec des privilèges élevés ou des privilèges faibles en définissant un niveau de privilège à partir de l’énumération TASK_RUNLEVEL_TYPE pour la propriété RunLevel d’IPrincipal (Principal.RunLevel pour le script). La valeur de la propriété RunLevel détermine le niveau de privilège auquel les actions d’une tâche seront exécutées. Si les actions d’une tâche doivent avoir des privilèges élevés à exécuter, vous devez définir la propriété RunLevel sur TASK_RUNLEVEL_HIGHEST. Si une tâche est inscrite à l’aide du groupe Administrateurs pour le contexte de sécurité de la tâche, vous devez également définir la propriété RunLevel sur TASK_RUNLEVEL_HIGHEST si vous souhaitez exécuter la tâche. Si une tâche est inscrite à l’aide du compte Builtin\Administrator ou du système local ou des comptes de service local, la propriété RunLevel est ignorée. La valeur de propriété est également ignorée si le contrôle de compte d’utilisateur (UAC) est désactivé. La valeur de la propriété RunLevel n’affecte pas les autorisations nécessaires pour exécuter ou supprimer une tâche.
Remarque
Après la mise à niveau d’un système d’exploitation de Windows XP vers Windows Vista, les tâches inscrites à l’aide du compte Builtin\Administrator sur Windows XP ont la propriété RunLevel définie sur TASK_RUNLEVEL_LUA. Cela peut entraîner l’échec de certaines tâches. Vous pouvez mettre à jour cette propriété manuellement pour vous assurer que toutes les tâches s’exécutent.
À partir d’un processus à privilèges faibles, vous ne pouvez pas inscrire une tâche auprès de la propriété RunLevel égale à TASK_RUNLEVEL_HIGHEST, mais vous pouvez inscrire une tâche auprès de la propriété RunLevel égale à TASK_RUNLEVEL_LUA. Les actions de tâche sont exécutées avec des privilèges faibles. Vous n’êtes pas autorisé à inscrire la tâche en tant que Builtin/Administrator, Local System ou pour un groupe.
À partir d’un processus de privilèges élevés, vous pouvez inscrire une tâche auprès de la propriété RunLevel égale à TASK_RUNLEVEL_HIGHEST ou TASK_RUNLEVEL_LUA. La tâche est exécutée avec un niveau de privilège décidé par la propriété RunLevel , sauf si vous utilisez le compte Administrateur, auquel cas la tâche est exécutée avec des privilèges élevés.
À partir d’un processus avec élévation de privilèges, vous pouvez inscrire une tâche Du planificateur de tâches 1.0. Le service Planificateur de tâches définit le niveau d’exécution de la tâche sur TASK_RUNLEVEL_HIGHEST et la tâche s’exécute avec des privilèges élevés.
À partir d’un processus à privilèges faibles, vous pouvez également inscrire une tâche Task Scheduler 1.0. Le service Planificateur de tâches définit le niveau d’exécution de la tâche sur TASK_RUNLEVEL_LUA, et la tâche s’exécute avec des privilèges faibles. Si cette tâche est mise à jour à partir d’un processus avec élévation de privilèges, le niveau d’exécution de la tâche reste TASK_RUNLEVEL_LUA.
Sécurité pour l’inscription des tâches
Lorsque vous inscrivez une tâche à partir d’un compte membre du groupe Administrateurs, vous devez uniquement spécifier un mot de passe lors de l’inscription de la tâche dans les situations suivantes :
- Si vous inscrivez la tâche à exécuter sous le contexte de sécurité de votre compte ou du compte d’un autre utilisateur et que vous utilisez l’indicateur TASK_LOGON_PASSWORD dans la méthode RegisterTask ou RegisterTaskDefinition .
- Si vous inscrivez la tâche à exécuter sous le contexte de sécurité d’un autre compte d’utilisateur et que vous utilisez l’indicateur TASK_LOGON_S4U dans la méthode RegisterTask ou RegisterTaskDefinition .
Vous ne pouvez pas utiliser un groupe d’utilisateurs comme contexte de sécurité d’une tâche lorsque vous inscrivez la tâche à l’aide de l’indicateur TASK_LOGON_S4U ou de l’indicateur TASK_LOGON_PASSWORD dans la méthode RegisterTask ou RegisterTaskDefinition .
Lorsque vous inscrivez une tâche à partir d’un compte d’utilisateur qui n’est pas membre du groupe Administrateurs, vous n’avez pas besoin de spécifier un mot de passe lors de l’inscription de la tâche si vous inscrivez la tâche pour s’exécuter dans le contexte de sécurité de votre compte et que vous utilisez le type d’ouverture de session S4U ou interactive. Sinon, vous devez spécifier un mot de passe lors de l’inscription de la tâche. En outre, vous ne pouvez pas inscrire la tâche à l’aide du compte de service local ou à l’aide d’un groupe pour le contexte de sécurité de la tâche.
Sécurité de la lecture, de la mise à jour, de la suppression et des tâches en cours d’exécution
Par défaut, un utilisateur qui crée une tâche peut lire, mettre à jour, supprimer et exécuter la tâche. Un utilisateur doit disposer d’une autorisation d’écriture de fichier sur un fichier de tâches pour mettre à jour une tâche, l’autorisation de lecture de fichier sur un fichier de tâches, supprimer une tâche pour supprimer une tâche et exécuter un fichier sur une tâche afin d’exécuter une tâche à l’aide des méthodes IRegisteredTask ::Run ou RunEx (RegisteredTask.Run et RunEx pour l’écriture de scripts). Les membres du groupe Administrateurs ou du compte SYSTEM peuvent lire, mettre à jour, supprimer et exécuter toutes les tâches. Les membres du groupe Utilisateurs, du compte LocalService et du compte NetworkService peuvent uniquement lire, mettre à jour, supprimer et exécuter les tâches qu’ils ont créées. Ce comportement par défaut est modifié lorsque la liste dacl du fichier de tâche est modifiée, auquel cas la liste DACL définit les utilisateurs disposant d’une autorisation d’écriture, de lecture, d’exécution et de suppression de fichiers. Pour définir des autorisations pour un fichier de tâches, utilisez la méthode IRegisteredTask.SetSecurityDescriptor (RegisteredTask.SetSecurityDescriptor pour le script) ou définissez le descripteur de sécurité lorsque vous inscrivez la tâche à l’aide des méthodes RegisterTask ou RegisterTaskDefinition .
Un utilisateur doit disposer de l’autorisation WriteDAC en plus des autorisations de lecture/écriture pour mettre à jour une tâche si la mise à jour de la tâche nécessite une modification de la liste DACL pour la tâche.
Rubriques connexes