you can try use the API call on Windows NT, this is what I find on the
Platform SDK
Platform SDK:
AbortSystemShutdown
The AbortSystemShutdown function stops a system shutdown started by using
the InitiateSystemShutdown function.
BOOL AbortSystemShutdown(
LPTSTR lpMachineName // pointer to name of computer to stop
// shutting down
);
Parameters
lpMachineName
Pointer to the null-terminated string that specifies the network name of the
computer where the shutdown is to be stopped. If lpMachineName is NULL or
points to an empty string, the function stops the shutdown on the local
computer.
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error
information, callGetLastError.
Remarks
The InitiateSystemShutdown function displays a dialog box that notifies the
user that the system is shutting down. During the InitiateSystemShutdown
time-out period, the AbortSystemShutdown function can prevent the system
from shutting down.
To stop the local computer from shutting down, the calling process must have
the SE_SHUTDOWN_NAME privilege. To stop a remote computer from shutting
down, the calling process must have the SE_REMOTE_SHUTDOWN_NAME privilege on
the remote computer. By default, users can enable the SE_SHUTDOWN_NAME
privilege on the computer they are logged onto, and administrators can
enable the SE_REMOTE_SHUTDOWN_NAME privilege on remote computers.
Common reasons for failure include an invalid computer name, an inaccessible
computer, or insufficient privilege.
QuickInfo
Windows NT: Requires version 3.1 or later.
Windows: Unsupported.
Windows CE: Unsupported.
Header: Declared in winreg.h.
Import Library: Use advapi32.lib.
Unicode: Implemented as Unicode and ANSI versions on Windows NT.