Partager via


Méthode IScheduledWorkItem ::SetAccountInformation (mstask.h)

[[Cette API peut être modifiée ou indisponible dans les versions ultérieures du système d’exploitation ou du produit. Utilisez plutôt les interfaces Du planificateur de tâches 2.0 .] ]

Définit le nom du compte et le mot de passe utilisés pour exécuter l’élément de travail.

Syntaxe

HRESULT SetAccountInformation(
  [in] LPCWSTR pwszAccountName,
  [in] LPCWSTR pwszPassword
);

Paramètres

[in] pwszAccountName

Chaîne qui contient le nom null du compte d’utilisateur dans lequel l’élément de travail s’exécutera. Pour spécifier le compte système local, utilisez la chaîne vide L" ». N’utilisez aucune autre chaîne pour spécifier le compte système local. Pour plus d'informations, consultez la section Notes.

[in] pwszPassword

Chaîne qui contient le mot de passe du compte spécifié dans pwszAccountName.

Définissez ce paramètre sur NULL si le compte système local est spécifié. Si vous définissez l’indicateur TASK_FLAG_RUN_ONLY_IF_LOGGED_ON, vous pouvez également définir pwszPassword sur NULL pour les comptes d’utilisateur locaux ou de domaine. Utilisez la méthode IScheduledWorkItem ::SetFlags pour définir l’indicateur.

Le planificateur de tâches ne stocke les informations de compte qu’une seule fois pour toutes les tâches qui utilisent le même compte. Si le mot de passe du compte est mis à jour pour une tâche, toutes les tâches utilisant ce même compte utilisent le mot de passe mis à jour.

Une fois que vous avez terminé d’utiliser le mot de passe, effacez les informations de mot de passe en appelant la fonction SecureZeroMemory . Pour plus d’informations sur la protection des mots de passe, consultez Gestion des mots de passe.

Valeur retournée

La méthode SetAccountInformation retourne l’une des valeurs suivantes. Notez que les erreurs de cet appel peuvent également être retournées par l’appel suivant à IPersistFile ::Save.

Code de retour Description
S_OK
L'opération a réussi.
E_ACCESSDENIED
L’appelant n’a pas l’autorisation d’effectuer l’opération. Pour plus d'informations, consultez la section Notes.
E_INVALIDARG
Les arguments ne sont pas valides.
E_OUTOFMEMORY
Mémoire disponible insuffisante.
SCHED_E_NO_SECURITY_SERVICES
Les services de sécurité sont disponibles uniquement sur Windows Server 2003, Windows XP et Windows 2000.
SCHED_E_UNSUPPORTED_ACCOUNT_OPTION
Le paramètre pwszPassword a été défini sur NULL, mais l’indicateur TASK_FLAG_RUN_ONLY_IF_LOGGED_ON n’a pas été défini.
SCHED_E_ACCOUNT_INFORMATION_NOT_SET
Le paramètre pwszPassword était incorrect. Dans Windows Server 2003, le planificateur de tâches valide le mot de passe au moment de la création du travail (lors d’un appel à IPersistFile ::Save). N’oubliez pas que si cette erreur se produit, le fichier de travail est toujours créé.

Remarques

Cette méthode concerne Windows Server 2003, Windows XP et Windows 2000.

Si pwszAccountName spécifie le compte système local, l’appelant doit être un administrateur sur l’ordinateur local ou une application s’exécutant dans le compte système local. Si ce n’est pas le cas, cette méthode échoue.

Le mot de passe spécifié dans pwszPassword est utilisé pour se connecter au compte lors de l’exécution de l’élément de travail. Un mot de passe incorrect entraîne une erreur lors de l’exécution de l’élément de travail. Dans Windows Server 2003, toutefois, le planificateur de tâches valide le mot de passe au moment de la création du travail (lors d’un appel à IPersistFile ::Save).

En règle générale, les mots de passe ont une date d’expiration. Si vous planifiez des tâches qui s’exécutent indéfiniment, vous devez mettre à jour la tâche pour refléter le nouveau mot de passe.

Notez que les erreurs peuvent être retournées par l’appel initial à SetAccountInformation ou l’appel suivant à IPersistFile ::Save.

Le service Planificateur de tâches doit être en cours d’exécution pour que cet appel réussisse. (SetAccountInformation entraîne un appel de procédure distante (RPC) au service Planificateur de tâches, mais l’appel RPC n’est pas effectué tant que IPersistFile ::Save n’est pas appelé.)

Le code de retour E_ACCESSDENIED est retourné dans les conditions suivantes :

  • L’appelant n’a pas accès en écriture au fichier qui représente l’élément de travail planifié.
  • Le compte local a été spécifié (pwszAccountName a été défini sur L" »), mais l’appelant n’est ni un administrateur sur l’ordinateur local ni une application s’exécutant dans le compte système local.
  • Un mot de passe NULL a été spécifié dans pwszPassword, mais l’appelant n’est ni un administrateur sur l’ordinateur local, ni s’exécute dans le compte système local.
  • L’application s’exécute sous un nom d’utilisateur différent de celui de l’utilisateur nommé spécifié dans le paramètre pwszAccountName .
Après avoir défini les informations de compte pour un élément de travail, veillez à appeler IPersistFile ::Save pour enregistrer l’objet d’élément de travail modifié sur le disque.

Exemples

Pour plus d’informations et un exemple de définition des informations de compte d’une tâche, consultez Exemple de code C/C++ : définition des informations de compte de tâche.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête mstask.h
Bibliothèque Mstask.lib
DLL Mstask.dll

Voir aussi

IScheduledWorkItem

IScheduledWorkItem ::GetAccountInformation

IScheduledWorkItem ::SetFlags