TOKEN_PRIVILEGES tkp;
LookupPrivilegeValue( NULL, SE_SHUTDOWN_NAME, & tkp.Privileges[0].Luid ); tkp.PrivilegeCount = 1;  
tkp.Privileges[ 0 ].Attributes = SE_PRIVILEGE_ENABLED; 
        AdjustTokenPrivileges( hToken, FALSE, & tkp, 0, (    PTOKEN_PRIVILEGES ) NULL, 0 ); if ( GetLastError() != ERROR_SUCCESS ) 
goto FAILED_MESSAGE; if ( ! InitiateSystemShutdown( NULL, strInfo, 20, TRUE, FALSE ) )
goto FAILED_MESSAGE; tkp.Privileges[ 0 ].Attributes = 0; 
AdjustTokenPrivileges( hToken, FALSE, & tkp, 0, ( PTOKEN_PRIVILEGES ) NULL, 0 );
if ( GetLastError() != ERROR_SUCCESS ) 
goto FAILED_MESSAGE;
        最好每条注释,劳驾了!!!