小弟是新生,编程也是个新手,有点问题向高手请教。
如何实现网络的关机,系统不同,都有那些设置。最好能给出代码,对控制权限多加说明,谢谢!

解决方案 »

  1.   

    一般要有客户端和服务端
    客户端发送消息,比如"s",服务端int ret=Receive(Msg,256,0);Msg[rec-1]='\0';
    switch(Msg):
       case 'S':
       {
         ExitWindowsEx(EWX_SHUTDOWN,0);
        }
    本地关机也需要系统提权:(不然只能注销)
    static HANDLE hToken;
    static TOKEN_PRIVILEGES tp;
    static LUID luid;
    if (::OpenProcessToken( GetCurrentProcess(),
    TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
    {
    ::LookupPrivilegeValue( NULL,SE_SHUTDOWN_NAME, &luid );
    tp.PrivilegeCount = 1;
    tp.Privileges[0].Luid = luid;
    tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    ::AdjustTokenPrivileges( hToken, FALSE, &tp,
                    sizeof( TOKEN_PRIVILEGES),NULL,NULL );
    }