在2000和Nt下关闭计算机需要指定的关机令牌权限,另外,如果电源是ATX的话,可以加一个powerdown参数(具体记不清了,你看sdk吧。)以前有很多老帖子,你茬茬吧。

解决方案 »

  1.   

    这个函数只能在Windows 9X和Windows Me下使用,Winnt/2000下需要获得更高的权限才能关闭计算机,请您参考msdn上的有关资料。
      

  2.   

    我用的是win2000,电源不知道具体是什么的.在win98/win me 中实现了.可是我现在要使它能在win2000中实现,能给出代码吗? 谢谢!
      

  3.   

    你的代码错了:
    关机:
    ExitWindowsEx(EWX_SHUTDOWN,EWX_SHUTDOWN);
    重骑:
    ExitWindowsEx(EWX_SHUTDOWN,EWX_REBOOT);
    —————————————————————————————————
    MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
    if Not Assigned(I) then
      I := TI.Create(Nil);
    I.Maxim := MaximStr;
    —————————————————————————————————
           
      

  4.   

    lxpbuaa(桂枝香在故国晚秋) 不行啊. 在win2000 中不能使用啊!
      

  5.   

    win2000是需要权限的,大哥~~~~~
    你用什么API也不行啊
      

  6.   

    OSVERSIONINFO osv;
    osv.dwOSVersionInfoSize=sizeof OSVERSIONINFO;
    GetVersionEx(&osv);
    if(osv.dwPlatformId==VER_PLATFORM_WIN32_NT){
    HANDLE hProcess,hToken;
    TOKEN_PRIVILEGES Privileges;
    LUID luid;
    hProcess=GetCurrentProcess();
    OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES,&hToken);
    Privileges.PrivilegeCount=1;
    LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&luid);
    Privileges.Privileges[0].Luid=luid;
    Privileges.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
    AdjustTokenPrivileges(hToken,FALSE,&Privileges,NULL,NULL,NULL);
    }
    ExitWindowsEx(EWX_POWEROFF,0);
    以前用delphi些的代码着不到了,这段是c++的,相信你能看懂的,自己改成delphi吧