Comment forcer windows à l'arrêt.
l'Appel de la routine suivante comme
WinExit(EWX_POWEROFF ou ewx_force n')
fonction de WinExit(drapeaux: integer): boolean
& nbsp & nbsp fonction SetPrivilege(privilegeName: chaîne de permettre: boolean): boolean
& nbsp & nbsp var tpPrev,
& ! & ! & ! & ! & ! & nbsp tp : TTokenPrivileges
& ! & ! & ! & ! & ! & nbsp jeton : THandle
& ! & ! & ! & ! & ! & nbsp dwRetLen : DWord
& nbsp & nbsp commencer
& ! & ! & ! & nbsp result := False
& ! & ! & ! & nbsp OpenProcessToken(fonction getcurrentprocess, TOKEN_ADJUST_PRIVILEGES ou TOKEN_QUERY, jeton)
& ! & ! & ! & nbsp tp.PrivilegeCount := 1
& ! & ! & ! & nbsp si LookupPrivilegeValue(nil, pchar(privilegeName), tp.Privilèges[0].LUID)
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp si l'option activer puis
& ! & ! & ! & ! & ! & ! & ! & nbsp tp.Privilèges[0].Attributs := SE_PRIVILEGE_ENABLED
& ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & nbsp tp.Privilèges[0].Attributs := 0
& ! & ! & ! & ! & ! & nbsp dwRetLen := 0
& ! & ! & ! & ! & ! & nbsp résultat := AdjustTokenPrivileges(jeton, Faux, tp, SizeOf(tpPrev), tpPrev, dwRetLen)
& ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp CloseHandle(jeton)
& nbsp & nbsp fin
begin
& nbsp & nbsp si SetPrivilege('SeShutdownPrivilege', true), puis commencer
& ! & ! & ! & nbsp ExitWindowsEx(drapeaux, 0)
& ! & ! & ! & nbsp SetPrivilege('SeShutdownPrivilege', False)
& nbsp & nbsp fin
fin
Arret de windows
Arret de windows : Plusieurs milliers de conseils pour vous faciliter la vie.
Comment forcer windows a l'arret.
l'Appel de la routine suivante comme
WinExit(EWX_POWEROFF ou ewx_force n')
fonction de WinExit(drapeaux: integer): boolean
& nbsp & nbsp fonction SetPrivilege(privilegeName: chaîne de permettre: boolean): boolean
& nbsp & nbsp var tpPrev,
& ! & ! & ! & ! & ! & nbsp tp : TTokenPrivileges
& ! & ! & ! & ! & ! & nbsp jeton : THandle
& ! & ! & ! & ! & ! & nbsp dwRetLen : DWord
& nbsp & nbsp commencer
& ! & ! & ! & nbsp result := False
& ! & ! & ! & nbsp OpenProcessToken(fonction getcurrentprocess, TOKEN_ADJUST_PRIVILEGES ou TOKEN_QUERY, jeton)
& ! & ! & ! & nbsp tp.PrivilegeCount := 1
& ! & ! & ! & nbsp si LookupPrivilegeValue(nil, pchar(privilegeName), tp.Privileges[0].LUID)
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp si l'option activer puis
& ! & ! & ! & ! & ! & ! & ! & nbsp tp.Privileges[0].Attributs := SE_PRIVILEGE_ENABLED
& ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & nbsp tp.Privileges[0].Attributs := 0
& ! & ! & ! & ! & ! & nbsp dwRetLen := 0
& ! & ! & ! & ! & ! & nbsp resultat := AdjustTokenPrivileges(jeton, Faux, tp, SizeOf(tpPrev), tpPrev, dwRetLen)
& ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp CloseHandle(jeton)
& nbsp & nbsp fin
begin
& nbsp & nbsp si SetPrivilege('SeShutdownPrivilege', true), puis commencer
& ! & ! & ! & nbsp ExitWindowsEx(drapeaux, 0)
& ! & ! & ! & nbsp SetPrivilege('SeShutdownPrivilege', False)
& nbsp & nbsp fin
fin