Юзай API

eclare Function ExitWindowsEx Lib "user32.dll" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
ExitWindowsEx выключает или перезагружает компьютер.Функция возвращает 0 в случае ошибки и 1 в успешном случае.
uFlags
Один или несколько флагов,определяющих способ выключения или перезагрузки компьютера:
EWX_FORCE = 4
Закрывает все программы без приглашения сохранить файлы.
EWX_LOGOFF = 0
Отключает от сети.Аналог - войти в систему под другим именем. (Завершение сеанса [name]).
EWX_POWEROFF = 8
Завершает работу системы и если есть возможность выключает компьютер.
EWX_REBOOT = 2
Перезагружает компьютер.
EWX_SHUTDOWN = 1
Завершает работу и выключает питание, записывает все файловые буферы на диск, останавливает все работающие системные процессы.
dwReserved
Зарезервированный параметр для будущих версий Windows. Всегда установлен в 0.
Пример
' Перезагружаем компьютер, закрывая все открытые программы.
- Код: Выделить всё
Dim retval As Long ' возвращаемое значение
retval = ExitWindowsEx(EWX_REBOOT Or EWX_FORCE, 0)
If retval = 0 Then Debug.Print "Не удается перезагрузить компьютер."