Condividi tramite


Funzione InitiateShutdownA (winreg.h)

Avvia un arresto e un riavvio del computer specificato e riavvia tutte le applicazioni registrate per il riavvio.

Sintassi

DWORD InitiateShutdownA(
  [in, optional] LPSTR lpMachineName,
  [in, optional] LPSTR lpMessage,
  [in]           DWORD dwGracePeriod,
  [in]           DWORD dwShutdownFlags,
  [in]           DWORD dwReason
);

Parametri

[in, optional] lpMachineName

Nome del computer da arrestare. Se il valore di questo parametro è NULL, il computer locale viene arrestato.

[in, optional] lpMessage

Messaggio da visualizzare nella finestra di dialogo di arresto interattivo.

[in] dwGracePeriod

Numero di secondi di attesa prima dell'arresto del computer. Se il valore di questo parametro è zero, il computer viene arrestato immediatamente. Questo valore è limitato a MAX_SHUTDOWN_TIMEOUT.

Se il valore di questo parametro è maggiore di zero e il parametro dwShutdownFlags parametro specifica il flag SHUTDOWN_GRACE_OVERRIDE, la funzione ha esito negativo e restituisce il codice di errore ERROR_BAD_ARGUMENTS.

[in] dwShutdownFlags

Uno o più flag di bit che specificano le opzioni per l'arresto. Vengono definiti i valori seguenti.

Valore Significato
SHUTDOWN_FORCE_OTHERS
0x00000001 (0x1)
Tutte le sessioni vengono disconnesse forzatamente. Se questo flag non è impostato e gli utenti diversi dall'utente corrente vengono connessi al computer specificato dal parametro lpMachineName, questa funzione non riesce con un valore restituito di ERROR_SHUTDOWN_USERS_LOGGED_ON.
SHUTDOWN_FORCE_SELF
0x00000002 (0x2)
Specifica che la sessione di origine viene disconnessa forzatamente. Se questo flag non è impostato, la sessione di origine viene arrestata in modo interattivo, quindi non è garantito un arresto anche se la funzione viene restituita correttamente.
SHUTDOWN_GRACE_OVERRIDE
0x00000020 (0x20)
Esegue l'override del periodo di tolleranza in modo che il computer venga arrestato immediatamente.
SHUTDOWN_HYBRID
0x00000200 (0x200)
A partire da InitiateShutdown in esecuzione in Windows 8, devi includere il flag SHUTDOWN_HYBRID con uno o più flag in questa tabella per specificare le opzioni per l'arresto.

A partire da Windows 8, InitiateShutdown avviare sempre un arresto completo del sistema se il flag SHUTDOWN_HYBRID è assente.

SHUTDOWN_INSTALL_UPDATES
0x00000040 (0x40)
Il computer installa tutti gli aggiornamenti prima di avviare l'arresto.
SHUTDOWN_NOREBOOT
0x00000010 (0x10)
Il computer viene arrestato ma non è spento o riavviato.
SHUTDOWN_POWEROFF
0x00000008 (0x8)
Il computer viene arrestato e spento.
SHUTDOWN_RESTART
0x00000004 (0x4)
Il computer viene arrestato e riavviato.
SHUTDOWN_RESTARTAPPS
0x00000080 (0x80)
Il sistema viene riavviato usando la funzione ExitWindowsEx con il flag EWX_RESTARTAPPS. In questo modo, tutte le applicazioni registrate per il riavvio vengono riavviate usando la funzione RegisterApplicationRestart .

[in] dwReason

Motivo dell'avvio dell'arresto. Questo parametro deve essere uno dei codici motivo di arresto del sistema . Se questo parametro è zero, il valore predefinito è un arresto non definito registrato come "Non è stato possibile trovare alcun titolo per questo motivo". Per impostazione predefinita, è anche un arresto non pianificato. A seconda della configurazione del sistema, un arresto non pianificato attiva la creazione di un file contenente le informazioni sullo stato del sistema, che può ritardare l'arresto. Pertanto, non usare zero per questo parametro.

Valore restituito

Se la funzione ha esito positivo, restituisce ERROR_SUCCESS.

Se la funzione ha esito negativo, restituisce uno dei codici di errore seguenti.

Codice restituito Descrizione
ERROR_ACCESS_DENIED
Il chiamante non dispone del privilegio necessario (SE_SHUTDOWN_PRIVILEGE o SE_REMOTE_SHUTDOWN_PRIVILEGE) per eseguire questa operazione.
ERROR_BAD_NETPATH
Il computer specificato non esiste o non è accessibile.
ERROR_INVALID_COMPUTERNAME
Il nome computer specificato non è un nome computer valido.
ERROR_INVALID_FUNCTION
Il computer specificato non supporta un'interfaccia di arresto.
ERROR_INVALID_PARAMETER
È stato passato un set di parametri non valido. Sono incluse le combinazioni seguenti.
  • Il parametro lpMachineName specifica un computer remoto e il parametro dwShutdownFlags non specifica SHUTDOWN_FORCE_SELF.
  • Il valore del dwGracePeriod è maggiore di zero e il parametro dwShutdownFlags non specifica SHUTDOWN_FORCE_SELF.
  • Il valore del dwGracePeriod è maggiore di zero e il parametro dwShutdownFlags specifica SHUTDOWN_GRACE_OVERRIDE.
ERROR_SHUTDOWN_IN_PROGRESS
Un arresto è già stato avviato nel computer specificato.
ERROR_SHUTDOWN_IS_SCHEDULED
Un arresto per il computer specificato è stato pianificato ma non avviato. Affinché questa funzione abbia esito positivo, è necessario impostare il flag SHUTDOWN_GRACE_OVERRIDE.
ERROR_SHUTDOWN_USERS_LOGGED_ON
Uno o più utenti diversi dall'utente corrente sono connessi al computer specificato e il flag di SHUTDOWN_FORCE_OTHERS non è stato impostato.

Osservazioni

Per arrestare il computer locale, il thread chiamante deve avere il privilegio SE_SHUTDOWN_NAME. Per arrestare un computer remoto, il thread chiamante deve avere il privilegio SE_REMOTE_SHUTDOWN_NAME nel computer remoto. Per impostazione predefinita, gli utenti possono abilitare il privilegio SE_SHUTDOWN_NAME nel computer in cui sono connessi e gli amministratori possono abilitare il privilegio SE_REMOTE_SHUTDOWN_NAME nei computer remoti. Per altre informazioni, vedere esecuzione con privilegi speciali.

I motivi comuni dell'errore includono un nome computer non valido o inaccessibile o privilegi insufficienti. L'errore ERROR_SHUTDOWN_IN_PROGRESS viene restituito se un arresto è già in corso nel computer specificato. L'errore ERROR_NOT_READY può essere restituito se l'opzione rapida dell'utente è abilitata, ma nessun utente è connesso.

Un valore restituito diverso da zero non indica che la disconnessione è stata o avrà esito positivo. L'arresto è un processo asincrono e può verificarsi molto tempo dopo che la chiamata API è stata restituita o non affatto. Anche se il valore di timeout è zero, l'arresto può comunque essere interrotto da applicazioni, servizi o persino dal sistema. Il valore restituito diverso da zero indica che la convalida dei diritti e dei parametri ha avuto esito positivo e che il sistema ha accettato la richiesta di arresto.

Nota

L'intestazione winreg.h definisce InitiateShutdown come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows Vista [app desktop | App UWP]
server minimo supportato Windows Server 2008 [app desktop | App UWP]
piattaforma di destinazione Finestre
intestazione winreg.h (include Windows.h)
libreria Advapi32.lib
dll Advapi32.dll

Vedere anche

arresto