在msdn里看到个例子,但拷贝运行后系统报错!(vc++6.0,winxp,msdn2000)

解决方案 »

  1.   

    Header: Declared in Winbase.h; include Windows.h.
    Library: Use Kernel32.lib.
      

  2.   

    您给的答案好像不对,错误如前!代码如下:
    #include "stdafx.h"
    #include "Windows.h"
    #include "winbase.h"
    CShutdownpcApp::CShutdownpcApp()
    {
    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_SHUTDOWN | EWX_FORCE, 0)); 
        //error("ExitWindowsEx"); 
    }