系统是xp,运行ExitWindowsEx无法关机,是否是提高权限问题?除此之外还可能是什么问题??(没有提高权限昨天在公司试的,无法关机,但是在公司实验室、办公室,家里都可以关机,至于提高权限只能放假后到公司试了,所以想问问还有什么可能性导致这种现象)
另外,如果关闭了explorer.exe进程,对于ExitWindowsEx关机是否有影响?
小弟初学者~~感谢大家的答复指导~~在此先谢过~~

解决方案 »

  1.   

    底层API
    void ShutDown()   
    {  
    TOKEN_PRIVILEGES   tkp,tkpnewbutignored;   
    HANDLE   hdltokenhandle,   hdlprocesshandle;   
    LUID   tmpluid;   
    BOOL   rc;   
    DWORD   lbufferneeded;   

    hdlprocesshandle   =   GetCurrentProcess();   
    rc   =   OpenProcessToken(hdlprocesshandle,TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,   &hdltokenhandle);   
    rc   =   LookupPrivilegeValue("","SeShutdownPrivilege",   &tmpluid);   

    tkp.PrivilegeCount   =   1;   
    tkp.Privileges[0].Luid   =   tmpluid;   
    tkp.Privileges[0].Attributes   =   SE_PRIVILEGE_ENABLED;   
    rc   =   AdjustTokenPrivileges(hdltokenhandle,FALSE,&tkp,sizeof(tkpnewbutignored),&tkpnewbutignored,   &lbufferneeded);   

    ExitWindowsEx( EWX_SHUTDOWN ,0); 
    }是这样用吗?
      

  2.   

    判断ExitWindowsEx的返回值,如果失败,GetLastError取错误码来分析。
    系统中可能有些程序阻止关机或者无法正常退出,可以使用EWX_FORCE标志。