在2000下关机需要SE_SHUTDOWN_NAME权限.

解决方案 »

  1.   

    同意 BCB_FANS(四大名捕之追杀令) 的說法,因為在2000下必須要有權限才可以
      

  2.   

    ExitWindowsEx(EWX_REBOOT,0);
    ExitWindowsEx(EWX_REBOOT,1);
    ExitWindowsEx(EWX_REBOOT,2);
    ExitWindowsEx(EWX_REBOOT,3);
    自己用一下啦
      

  3.   

    同意:BCB_FANS(四大名捕之追杀令) 说法。
    EXITWINDOWS(REBOOT,0);
    具体做法关注。
      

  4.   

    关闭计算机:
     begin
       ExitWindowsEx(EWX_SHUTDOWN,1);
       ExitWindowsEx(EWX_POWEROFF,1);
      end;
    重新启动计算机
      ExitWindowsEx(EWX_REBOOT,1);
      

  5.   

    const
    EWX_FORCE=4; //关闭所有程序并以其他用户身份登录
    EWX_LOGOFF=0; //重新启动计算机并切换到MS-DOS方式
    EWX_REBOOT=2; //重新启动计算机
    EWX_SHUTDOWN=1;//关闭计算机
    运行时给How赋值,让他等于EWX_SHUTDOWN或其他,调用以下语句
    ExitWindowsEx(How,0);
      

  6.   


    TO: BCB_FANS(四大名捕之追杀令) SE_SHUTDOWN_NAME ??? 您能详细说明一下吗?我不懂得,不好意思:)
      

  7.   

    调用ExWin...之前调用如下语句,SetProcessTokenPrivilege(GetCurrentProcess(),false,
    "SeShutdownPrivilege",true);------------------------
    //SetProcessTokenPrivilege
    bool __fastcall SetProcessTokenPrivilege(HANDLE hProcess,bool IsHandleIsToken,
     AnsiString PrivilegeName,bool IsEnablePrivilege)
    {
      HANDLE hToken;
      TOKEN_PRIVILEGES tp;
      LUID luid;  if(IsHandleIsToken)
        hToken=hProcess;
      else if(!OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY | TOKEN_READ,&hToken))
        return false;  if(!LookupPrivilegeValue( NULL, PrivilegeName.c_str(), &luid ))
        return false;  tp.PrivilegeCount           = 1;
      tp.Privileges[0].Luid       = luid;
      tp.Privileges[0].Attributes = (IsEnablePrivilege) ? SE_PRIVILEGE_ENABLED : 0;  AdjustTokenPrivileges(hToken,false,&tp,NULL,NULL,NULL);  if(!IsHandleIsToken)
        CloseHandle(hToken);  return (GetLastError() == ERROR_SUCCESS);
    }
      

  8.   


    请问如何才能拥有 SE_SHUTDOWN_NAME 特权???
      

  9.   

    TO: BCB_FANS(四大名捕之追杀令) 天啊,我还是看不懂!您能直接告诉我在DELPHI下我该如何做吗?我是初学者,很苯的,麻烦您了。
      

  10.   

    不好意思,我的Delphi很差,不知道如何用Delphi写,建议重新开一个小贴(20分)
    让人家帮你转换一下.
      

  11.   

    ExitWindowsEx(EWX_FORCE of EWX_REBOOT,0);//关闭计算机
      

  12.   

    ExitWindowsEx(EWX_FORCE or EWX_REBOOT,0);//关闭计算机
      

  13.   

    BOOL ExitWindowsEx(
                     UNIT uFlags,
                     DWORD dwReserved);
    uFlags:
        EWX_FORCE:强迫中止没有响应的进程
        EWX_LOGOFF:中止进程,注销用户
        EWX_POWEROFF:关掉系统电源
        EWX_REBOOT:重新启动计算机
        EWX_SHUTDOWN:关闭计算机
      

  14.   

    上面除了BCB_FANS(四大名捕之追杀令)说的外,都不全面,解决不了问题
    因为2000的安全保护机制,没有权限是不可能关机的,必须调用API函数,设置其具有关机权限,一会我整理一下,wait me