Share via


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 da attendere prima di arrestare il 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 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. I valori seguenti sono definiti.

Valore Significato
SHUTDOWN_FORCE_OTHERS
0x00000001 (0x1)
Tutte le sessioni vengono disattivate 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 in modo forzato. Se questo flag non è impostato, la sessione di origine viene arrestata in modo interattivo, quindi un arresto non è garantito anche se la funzione restituisce 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 daAvvioShutdown in esecuzione su Windows 8, è necessario includere il flag di SHUTDOWN_HYBRID con uno o più flag in questa tabella per specificare le opzioni per l'arresto.

A partire da Windows 8, AvviaShutdown avvia sempre un arresto completo del sistema se il flag di 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 è attivato 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 di EWX_RESTARTAPPS. In questo modo vengono riavviate tutte le applicazioni registrate per il riavvio usando la funzione RegisterApplicationRestart .

[in] dwReason

Motivo dell'avvio dell'arresto. Questo parametro deve essere uno dei codici di motivo di arresto del sistema. Se questo parametro è zero, il valore predefinito è un arresto non definito registrato come "Nessun 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 obbligatorio (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
È stato pianificato un arresto per il computer specificato, ma non è stato 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 vengono connessi al computer specificato e il flag di SHUTDOWN_FORCE_OTHERS non è stato impostato.

Commenti

Per arrestare il computer locale, il thread chiamante deve avere il privilegio di 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 di SE_SHUTDOWN_NAME nel computer in cui sono connessi e gli amministratori possono abilitare il privilegio di SE_REMOTE_SHUTDOWN_NAME nei computer remoti. Per altre informazioni, vedere Esecuzione con privilegi speciali.

Motivi comuni per l'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 il passaggio rapido dell'utente è abilitato, ma nessun utente è connesso.

Un valore restituito diverso da zero non indica che il logoff è stato o avrà esito positivo. L'arresto è un processo asincrono e può verificarsi a lungo dopo che la chiamata API è stata restituita o meno. Anche se il valore di timeout è zero, l'arresto può comunque essere interrotto da applicazioni, servizi o anche dal sistema. Il valore restituito non zero indica che la convalida dei diritti e dei parametri è stata completata 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 preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione winreg.h (include Windows.h)
Libreria Advapi32.lib
DLL Advapi32.dll

Vedi anche

Arresto