Partager via


Fonction InitiateShutdownW (winreg.h)

Lance un arrêt et un redémarrage de l’ordinateur spécifié et redémarre toutes les applications qui ont été inscrites pour le redémarrage.

Syntaxe

DWORD InitiateShutdownW(
  [in, optional] LPWSTR lpMachineName,
  [in, optional] LPWSTR lpMessage,
  [in]           DWORD  dwGracePeriod,
  [in]           DWORD  dwShutdownFlags,
  [in]           DWORD  dwReason
);

Paramètres

[in, optional] lpMachineName

Nom de l’ordinateur à arrêter. Si la valeur de ce paramètre est NULL, l’ordinateur local est arrêté.

[in, optional] lpMessage

Message à afficher dans la boîte de dialogue d’arrêt interactif.

[in] dwGracePeriod

Nombre de secondes à attendre avant d’arrêter l’ordinateur. Si la valeur de ce paramètre est zéro, l’ordinateur est immédiatement arrêté. Cette valeur est limitée à MAX_SHUTDOWN_TIMEOUT.

Si la valeur de ce paramètre est supérieure à zéro et que le paramètre dwShutdownFlags spécifie l’indicateur SHUTDOWN_GRACE_OVERRIDE, la fonction échoue et retourne le code d’erreur ERROR_BAD_ARGUMENTS.

[in] dwShutdownFlags

Un ou plusieurs indicateurs de bits qui spécifient des options pour l’arrêt. Les valeurs suivantes sont définies.

Valeur Signification
SHUTDOWN_FORCE_OTHERS
0x00000001 (0x1)
Toutes les sessions sont déconnectées de force. Si cet indicateur n’est pas défini et que des utilisateurs autres que l’utilisateur actuel sont connectés à l’ordinateur spécifié par le paramètre lpMachineName , cette fonction échoue avec une valeur de retour de ERROR_SHUTDOWN_USERS_LOGGED_ON.
SHUTDOWN_FORCE_SELF
0x00000002 (0x2)
Spécifie que la session d’origine est déconnectée de force. Si cet indicateur n’est pas défini, la session d’origine est arrêtée de manière interactive. Un arrêt n’est donc pas garanti même si la fonction retourne correctement.
SHUTDOWN_GRACE_OVERRIDE
0x00000020 (0x20)
Remplace la période de grâce afin que l’ordinateur soit arrêté immédiatement.
SHUTDOWN_HYBRID
0x00000200 (0x200)
À compter de l’exécution d’InitiateShutdown sur Windows 8, vous devez inclure l’indicateur SHUTDOWN_HYBRID avec un ou plusieurs indicateurs dans cette table pour spécifier les options de l’arrêt.

À compter de Windows 8, InitiateShutdown lance toujours un arrêt complet du système si l’indicateur SHUTDOWN_HYBRID est absent.

SHUTDOWN_INSTALL_UPDATES
0x00000040 (0x40)
L’ordinateur installe les mises à jour avant de démarrer l’arrêt.
SHUTDOWN_NOREBOOT
0x00000010 (0x10)
L’ordinateur est arrêté, mais il n’est pas mis hors tension ni redémarré.
SHUTDOWN_POWEROFF
0x00000008 (0x8)
L’ordinateur est arrêté et mis hors tension.
SHUTDOWN_RESTART
0x00000004 (0x4)
L’ordinateur est arrêté et redémarré.
SHUTDOWN_RESTARTAPPS
0x00000080 (0x80)
Le système est redémarré à l’aide de la fonction ExitWindowsEx avec l’indicateur EWX_RESTARTAPPS. Cela redémarre toutes les applications qui ont été inscrites pour redémarrer à l’aide de la fonction RegisterApplicationRestart .

[in] dwReason

Raison du lancement de l’arrêt. Ce paramètre doit être l’un des codes de raison d’arrêt du système. Si ce paramètre est égal à zéro, la valeur par défaut est un arrêt non défini enregistré sous la forme « Aucun titre pour cette raison n’a pu être trouvé ». Par défaut, il s’agit également d’un arrêt non planifié. Selon la façon dont le système est configuré, un arrêt non planifié déclenche la création d’un fichier qui contient les informations d’état du système, ce qui peut retarder l’arrêt. Par conséquent, n’utilisez pas zéro pour ce paramètre.

Valeur retournée

Si la fonction réussit, elle retourne ERROR_SUCCESS.

Si la fonction échoue, elle retourne l’un des codes d’erreur suivants.

Code de retour Description
ERROR_ACCESS_DENIED
L’appelant ne dispose pas du privilège requis (SE_SHUTDOWN_PRIVILEGE ou SE_REMOTE_SHUTDOWN_PRIVILEGE) pour effectuer cette opération.
ERROR_BAD_NETPATH
L’ordinateur spécifié n’existe pas ou n’est pas accessible.
ERROR_INVALID_COMPUTERNAME
Le nom d’ordinateur spécifié n’est pas un nom d’ordinateur valide.
ERROR_INVALID_FUNCTION
L’ordinateur spécifié ne prend pas en charge une interface d’arrêt.
ERROR_INVALID_PARAMETER
Un ensemble de paramètres non valide a été passé. Cela inclut les combinaisons suivantes.
  • Le paramètre lpMachineName spécifie un ordinateur distant et le paramètre dwShutdownFlags ne spécifie pas SHUTDOWN_FORCE_SELF.
  • La valeur de dwGracePeriod est supérieure à zéro et le paramètre dwShutdownFlags ne spécifie pas SHUTDOWN_FORCE_SELF.
  • La valeur du dwGracePeriod est supérieure à zéro et le paramètre dwShutdownFlags spécifie SHUTDOWN_GRACE_OVERRIDE.
ERROR_SHUTDOWN_IN_PROGRESS
Un arrêt a déjà été démarré sur l’ordinateur spécifié.
ERROR_SHUTDOWN_IS_SCHEDULED
Un arrêt de l’ordinateur spécifié a été planifié, mais pas démarré. Pour que cette fonction réussisse, l’indicateur SHUTDOWN_GRACE_OVERRIDE doit être défini.
ERROR_SHUTDOWN_USERS_LOGGED_ON
Un ou plusieurs utilisateurs autres que l’utilisateur actuel sont connectés sur l’ordinateur spécifié et l’indicateur SHUTDOWN_FORCE_OTHERS n’a pas été défini.

Remarques

Pour arrêter l’ordinateur local, le thread appelant doit disposer du privilège SE_SHUTDOWN_NAME. Pour arrêter un ordinateur distant, le thread appelant doit disposer du privilège SE_REMOTE_SHUTDOWN_NAME sur l’ordinateur distant. Par défaut, les utilisateurs peuvent activer le privilège SE_SHUTDOWN_NAME sur l’ordinateur sur lequel ils sont connectés, et les administrateurs peuvent activer le privilège SE_REMOTE_SHUTDOWN_NAME sur les ordinateurs distants. Pour plus d’informations, consultez Exécution avec des privilèges spéciaux.

Les raisons courantes de l’échec incluent un nom d’ordinateur non valide ou inaccessible ou un privilège insuffisant. Le ERROR_SHUTDOWN_IN_PROGRESS d’erreur est retourné si un arrêt est déjà en cours sur l’ordinateur spécifié. Le ERROR_NOT_READY d’erreur peut être retourné si le changement rapide d’utilisateur est activé, mais qu’aucun utilisateur n’est connecté.

Une valeur de retour autre que zéro ne signifie pas que la fermeture de session a été ou sera réussie. L’arrêt est un processus asynchrone, qui peut se produire longtemps après le retour de l’appel d’API, ou pas du tout. Même si la valeur du délai d’expiration est égale à zéro, l’arrêt peut toujours être abandonné par les applications, les services ou même le système. La valeur de retour autre que zéro indique que la validation des droits et des paramètres a réussi et que le système a accepté la demande d’arrêt.

Notes

L’en-tête winreg.h définit InitiateShutdown comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête winreg.h (inclure Windows.h)
Bibliothèque Advapi32.lib
DLL Advapi32.dll

Voir aussi

Fermeture