Funzione InitiateSystemShutdownExW (winreg.h)
Avvia un arresto e il riavvio facoltativo del computer specificato e registra facoltativamente il motivo dell'arresto.
Sintassi
BOOL InitiateSystemShutdownExW(
[in, optional] LPWSTR lpMachineName,
[in, optional] LPWSTR lpMessage,
[in] DWORD dwTimeout,
[in] BOOL bForceAppsClosed,
[in] BOOL bRebootAfterShutdown,
[in] DWORD dwReason
);
Parametri
[in, optional] lpMachineName
Nome di rete del computer da arrestare. Se lpMachineName è NULL o una stringa vuota, la funzione arresta il computer locale.
[in, optional] lpMessage
Messaggio da visualizzare nella finestra di dialogo di arresto. Questo parametro può essere NULL se non è necessario alcun messaggio.
Windows Server 2003 e Windows XP: Questa stringa viene anche archiviata come commento nella voce del registro eventi.
Windows Server 2003 e Windows XP con SP1: La stringa è limitata a 3072 TCHAR.
[in] dwTimeout
Intervallo di tempo durante il quale deve essere visualizzata la finestra di dialogo di arresto, espressa in secondi. Durante la visualizzazione di questa finestra di dialogo, l'arresto può essere arrestato dalla funzione AbortSystemShutdown .
Se dwTimeout non è zero, InitiateSystemShutdownEx visualizza una finestra di dialogo nel computer specificato. Nella finestra di dialogo viene visualizzato il nome dell'utente che ha chiamato la funzione, viene visualizzato il messaggio specificato dal parametro lpMessage e viene richiesto all'utente di disconnettersi. Quando viene creata, la finestra di dialogo rimane in cima ad altre finestre del sistema. La finestra di dialogo può essere spostata ma non chiusa. Un timer calcola il tempo rimanente prima dell'arresto.
Se dwTimeout è zero, il computer viene arrestato senza visualizzare la finestra di dialogo e l'arresto non può essere arrestato da AbortSystemShutdown.
Windows Server 2003 e Windows XP con SP1: Il valore di timeout è limitato a MAX_SHUTDOWN_TIMEOUT secondi.
Windows Server 2003 e Windows XP con SP1: Se il computer da arrestare è un server Servizi terminal, il sistema visualizza una finestra di dialogo per tutti gli utenti locali e remoti che avvisano che l'arresto è stato avviato. La finestra di dialogo include chi ha richiesto l'arresto, il messaggio di visualizzazione (vedere lpMessage) e il tempo necessario fino all'arresto del server.
[in] bForceAppsClosed
Se questo parametro è TRUE, le applicazioni con modifiche non salvate devono essere chiuse forzatamente. Se questo parametro è FALSE, il sistema visualizza una finestra di dialogo che indica all'utente di chiudere le applicazioni.
[in] bRebootAfterShutdown
Se questo parametro è TRUE, il computer deve essere riavviato immediatamente dopo l'arresto. Se questo parametro è FALSE, il sistema scarica tutte le cache su disco e alimenta in modo sicuro il sistema.
[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 "Impossibile trovare il 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.
Windows XP: Le informazioni sullo stato del sistema non vengono salvate durante un arresto del sistema non pianificato. Il testo precedente non si applica.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero.
Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
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 di 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.
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 il passaggio rapido dell'utente è abilitato ma non è connesso alcun utente.
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 la restituzione o meno della chiamata API. 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.
Quando questa funzione viene chiamata, il chiamante deve specificare se le applicazioni con modifiche non salvate devono essere chiuse forzatamente. Se il chiamante sceglie di non forzare la chiusura di queste applicazioni e un'applicazione con modifiche non salvate viene eseguita nella sessione della console, l'arresto rimarrà in corso finché l'utente non ha eseguito l'accesso alla sessione della console, salva le modifiche, chiude l'applicazione o forza la chiusura dell'applicazione. Durante questo periodo l'arresto potrebbe non essere interrotto ad eccezione dell'utente della console e potrebbe non essere avviato un altro arresto.
Si noti che la chiamata a questa funzione con il valore del parametro bForceAppsClosed impostato su TRUE evita questa situazione. Tenere presente che questa operazione può comportare la perdita di dati.
Windows Server 2003 e Windows XP: Se il computer è bloccato e il parametro bForceAppsClosed è FALSE, l'ultimo codice di errore è ERROR_MACHINE_LOCKED. Se il sistema non è pronto per gestire la richiesta, l'ultimo codice di errore è ERROR_NOT_READY. L'applicazione deve attendere un breve periodo di tempo e ripetere la chiamata. Ad esempio, il sistema può essere non letto per avviare un arresto e restituire ERROR_NOT_READY, se la richiesta di arresto viene inviata contemporaneamente a un utente che tenta di accedere al sistema. In questo caso, l'applicazione deve attendere un breve periodo di tempo e ripetere la chiamata.
Nota
L'intestazione winreg.h definisce InitiateSystemShutdownEx 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 che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [app desktop | App UWP] |
Server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | winreg.h (include Windows.h) |
Libreria | Advapi32.lib |
DLL | Advapi32.dll |