FunzioneAvvioSystemShutdownExA (winreg.h)

Avvia un arresto e un riavvio facoltativo del computer specificato e registra facoltativamente il motivo dell'arresto.

Sintassi

BOOL InitiateSystemShutdownExA(
  [in, optional] LPSTR lpMachineName,
  [in, optional] LPSTR 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 archiviata anche come commento nella voce del registro eventi.

Windows Server 2003 e Windows XP con SP1: La stringa è limitata a 3072 TCHARs.

[in] dwTimeout

Tempo di visualizzazione della finestra di dialogo di arresto, in secondi. Mentre questa finestra di dialogo viene visualizzata, l'arresto può essere arrestato dalla funzione AbortSystemShutdown .

Se dwTimeout non è zero, AvviaSystemShutdownEx visualizza una finestra di dialogo nel computer specificato. La finestra di dialogo visualizza il nome dell'utente che ha chiamato la funzione, visualizza il messaggio specificato dal parametro lpMessage e chiede all'utente di disconnettersi. La finestra di dialogo si attiva quando viene creata e rimane in cima ad altre finestre del sistema. La finestra di dialogo può essere spostata ma non chiusa. Un timer conta 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 li avvisano che è stato avviato l'arresto. La finestra di dialogo include chi ha richiesto l'arresto, il messaggio visualizzato (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 in modo imprevisto. 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 consente di attivare in modo sicuro il sistema.

[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.

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 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.

Quando questa funzione viene chiamata, il chiamante deve specificare se le applicazioni con modifiche non salvate devono essere chiuse in modo imprevisto. 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 fino a quando l'utente ha eseguito l'accesso alla sessione della console interrompendo l'arresto, salva le modifiche, chiude l'applicazione o forza la chiusura dell'applicazione. Durante questo periodo l'arresto potrebbe non essere interrotto tranne per l'utente della console e un altro arresto potrebbe non essere avviato.

Si noti che la chiamata a questa funzione con il valore del parametro bForceAppsClosed impostata su TRUE evita questa situazione. Tenere presente che questa operazione può causare 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 riprovare 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 eseguita contemporaneamente a un utente che tenta di accedere al sistema. In questo caso, l'applicazione deve attendere un breve periodo e riprovare 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 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 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

Vedi anche

AbortSystemShutdown

Arresto

Funzioni di arresto del sistema