client计算机有一个服务程序A和一个客户端程序B,服务A开机的时候自动启动并调用B,由server发送一定的数据包控制client端关机或者重新启动。在使用管理员帐户登陆后可以实现关机,而当windows xp启动后并且没有登陆进入桌面时,关机操作失败。
经查找客户端在关机操作的时候出现问题。客户机使用2种方式都不能实现关机
1。ExitWindowEx();并调整了权限
2。Winexec()执行 shutdown -s命令另外在远程使用shutdown -s -m \\计算机 也不能关机,提示“Device not ready"还有哪位能够提出宝贵建议的,实现在没有进入系统的时候由客户端程序B实现关机,要是B不行的话,有A关机的方案的也非常感谢。分数不够的话,再开一个帖子发分。

解决方案 »

  1.   

    InitiateSystemShutdown(RemoteIp, strMsg, uTimeOut, TRUE, TRUE);
      

  2.   

    怎么是server端控制client端啊,反了吧
    不登录都要能控制,被控端是不是要做成服务呀?
      

  3.   

    InitiateSystemShutdown,也是不能关机的,我现在连shutdown命令在目标机没有登陆的情况下都不能实现远程关机的,我现在做的是一个管理程序,远程关机只是其中的一部分,确实目标机器上面是由服务程序A的,关机代码在B中,启动的时候由A调用B,B程序监听网络,假如有关机命令发过来的话,就执行ExitWindowEx或者执行InitiateSystemShutdown,关键问题时在登陆到桌面之前如何实现关机操作
      

  4.   

    ExitWindowsEx()返回什么错误?
    服务A是以什么身份启动的?
      

  5.   

    服务程序设置成Winlogon桌面,再调用InitiateSystemShutdown或ExitWindowsEx
      

  6.   

    服务设置成以administrator登陆也不行啊,又没有人成功的在服务中关闭计算机的,一定要是在还没有任何用户登录系统之前
      

  7.   

    我就用InitiateSystemShutdown关闭了计算机,为什么你不行?服务程序提升了权限没有?
      

  8.   

    现在的问题是不是应该在A中用CreateProcessAsUser来创建B,然后 LogonUser 才能获得关机的权限阿。我现在的程序还是在被控端系统登陆后可以关机,在没有使用任何帐户登陆之前没有办法关机或者重启。
      

  9.   

    不可能,因为你的windows都没有启动,你的客户端程序在哪儿启动的呢?
    还有,你的命令行也不能执行啊