Какой флаг для перезагрузки, я знаю, просто запутался в том, что надо, вот и привёл этот код. Ведь поменять-то надо совсем немного.Eugie писал(а):delphi-coder, для перезагрузки флаг EWX_REBOOT. И зачем два раза вызывать ExitWindowsEx? И еще: SetProcessShutdownParameters в Win9x нет, так что там не сработает. Лучше проверять версию Виндов и для 9x вызывать сразу ExitWindowsEx без запроса привилегий. В остальном - все верно :)
А два раза вызывается вот зачем: попробуй-ка перезагрузить WinNT, просто вызвав ExitWindowsEx! Ничего не выйдет, т.к. необходимо сперва получить соответствующие привилегии, это и делается при помощи SetProcessShutdownParameters и иже с ней.
А теперь представим, что произойдёт, запусти это пользователь под Win9X: сработает ExitWindowsEx, и комп выключится\перезагрузится. А под NT первый вызов ExitWindowsEx не сработает, выполнится код для получение соответствующих привилегий, и после этого снова выполниться ExitWindowsEx, и мы добьёмся, чего хотели.