Существует функция ExitWindowsEx , которая может сделать это. Вам нужно передать флаг EWX_REBOOT (0x00000002), чтобы перезапустить систему.
Важное примечание здесь (цитата из MSDN ):
Функция ExitWindowsEx возвращается, как только она инициировала процесс выключения. Выключение или выход из системы затем происходит асинхронно. Функция предназначена для остановки всех процессов в сеансе входа в систему. Поэтому, если вы не являетесь интерактивным пользователем, эта функция может успешно работать без фактического выключения компьютера. Если вы не являетесь интерактивным пользователем, используйте функцию InitiateSystemShutdown или InitiateSystemShutdownEx .
Вы можете выбрать между соответствующей функцией в зависимости от вашей ситуации.