Vanhelsing, не пишу я пока на ассемблере.

А программулина просто была на диске. Изврат - писать подобную утилиту на ассемблере. Есть же API-функция, читайте
Windows SDK:
Цитата:
BOOL ExitWindowsEx(
UINT uFlags, // shutdown operation
DWORD dwReserved // reserved
);
Parameters
uFlags
Specifies the type of shutdown. This parameter must be some combination of the following values:
Value Meaning
EWX_FORCE Forces processes to terminate. When this flag is set, Windows does not send the messages WM_QUERYENDSESSION and WM_ENDSESSION to the applications currently running in the system. This can cause the applications to lose data. Therefore, you should only use this flag in an emergency.
EWX_LOGOFF Shuts down all processes running in the security context of the process that called the ExitWindowsEx function. Then it logs the user off.
EWX_POWEROFF Shuts down the system and turns off the power. The system must support the power-off feature.Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section. Windows 95: Security privileges are not supported or required.
EWX_REBOOT Shuts down the system and then restarts the system. Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section. Windows 95: Security privileges are not supported or required.
EWX_SHUTDOWN Shuts down the system to a point at which it is safe to turn off the power. All file buffers have been flushed to disk, and all running processes have stopped. Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section. Windows 95: Security privileges are not supported or required.
|
То есть для нормального выключения Windows достаточно вставить следующий код:
ExitWindowsEx (EWX_SHUTDOWN, 0). Как принять и обработать команду для выключения - это уже зависит от технических возможностей и предпочтений программиста. Для того, чтобы программно можно было вывести компьютер из ждущего режима, достаточно войти в свойства сетевой карты --
"Управление электропитанием" и поставить галочку
"Разрешить устройству вывод компьютера из ждущего режима". Ну и программой посылать какой-либо пакет сетевой карте...