Partager via


InitiateShutdownW, fonction (winreg.h)

Lance un arrêt et un redémarrage de l’ordinateur spécifié et redémarre toutes les applications 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 égale à zéro, l’ordinateur est arrêté immédiatement. 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 avec force. Si cet indicateur n’est pas défini et que les 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 avec force. Si cet indicateur n’est pas défini, la session d’origine est arrêtée de manière interactive. Par conséquent, un arrêt n’est 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 InitiateShutdown en cours d’exécution sur Windows 8, vous devez inclure l’indicateur SHUTDOWN_HYBRID avec un ou plusieurs des indicateurs de ce tableau pour spécifier les options de l’arrêt.

À compter de Windows 8, InitiateShutdown toujours lancer 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 n’est pas sous 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 de EWX_RESTARTAPPS. Cela redémarre toutes les applications inscrites pour le redémarrage à l’aide de la fonction RegisterApplicationRestart.

[in] dwReason

Motif 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 est introuvable ». Par défaut, il s’agit également d’un arrêt non planifié. Selon la configuration du système, 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 de retour

Si la fonction réussit, elle retourne ERROR_SUCCESS.

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

Retourner le code Description
ERROR_ACCESS_DENIED
L’appelant n’a pas le 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 du 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 pour 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 de 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. L’erreur ERROR_SHUTDOWN_IN_PROGRESS est retournée si un arrêt est déjà en cours sur l’ordinateur spécifié. L’erreur ERROR_NOT_READY peut être retournée si le basculement rapide de l’utilisateur est activé, mais qu’aucun utilisateur n’est connecté.

Une valeur de retour non nulle ne signifie pas que la déconnexion a été ou sera réussie. L’arrêt est un processus asynchrone et peut se produire longtemps après que l’appel d’API a retourné, ou pas du tout. Même si la valeur de 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 non 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.

Note

L’en-tête winreg.h définit InitiateShutdown comme 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.

Exigences

Exigence Valeur
client minimum pris en charge Windows Vista [applications de bureau | Applications UWP]
serveur minimum pris en charge Windows Server 2008 [applications de bureau | Applications UWP]
plateforme cible Windows
d’en-tête winreg.h (inclure Windows.h)
bibliothèque Advapi32.lib
DLL Advapi32.dll

Voir aussi

arrêter