Здравствуйте, Smile_fpm, Вы писали:
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
error("OpenProcessToken");
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
error("AdjustTokenPrivileges");
if (!ExitWindowsEx(EWX_POWEROFF | EWX_FORCE, 0))
error("ExitWindowsEx");
return 0;
}
... << RSDN@Home 1.0 beta 5 >>

Надо вырубить Винду в определенное время. Трюк с rundll32.exe user32.dll ExitWindowsEx 1, 0 не работает. Пробовал написать прогу на С, вызывающей эту функцию, но W98 ругается, чтобы сперва завершил приложение, а потом выключал Винду.
Может кто-нибудь знает ответ? Заранее благодарен.

Здравствуйте, Михаил Можаев.
Спасибо за ответ, но 98-я так и не сдается...
Здравствуйте, Smile_fpm, Вы писали:
SF>
Здравствуйте, Михаил Можаев.
SF>Спасибо за ответ, но 98-я так и не сдается...
Хм. В MSDN написано
Windows 95/98: ExitWindowEx does not work from a console application, as it does on Windows NT/Windows 2000.
Может из-за этого...

... << RSDN@Home 1.0 beta 5 >>
Здравствуйте, Smile_fpm, Вы писали:
SF>
Надо вырубить Винду в определенное время.
Если тебе не нужно, чтобы это делала твоя программа, то можешь установить какой-нибудь планировщик и настроить его. Я пользуюсь nnCron'ом

.