2014-11-15 55 views
0

如何休眠一台Windows机器,它可以从另一台PC通过局域网运行Windows 7或8?
是否有WinAPI功能?或者我必须发送特殊的魔术包或类似的东西?
我所知道的是,PsShutdown.exe能够做到这一点(据称,我没有尝试过)。C++:远程休眠PC

我不想使用第三方库,我也不想在应该休眠的计算机上运行服务。我想使用现有的机制。

我还想知道是否需要更改目标计算机上的特定设置。 我不确定这是否重要,但shutdown /s /m \\ComputerName在我的目标PC上无法正常工作。

回答

0

TechNet文档Restart or Shut Down a Remote Computer and Document the Reason描述了对远程计算机使用shutdown.exe命令的要求。

  1. 为了使用此功能,必须在远程计算机上启用Remote Registry service

  2. 访问的管理员远程注册表或会员组的远程计算机上完成此过程

+0

你误解了两件事。首先,我想使用一个API函数,COM或类似的,其次我想休眠我的目标PC,而不是关闭它或重新启动它。 shutdown.exe的问题在于,它是一个专门的exe文件,这意味着性能会非常糟糕,特别是在重复运行时,以及对远程PC没有任何休眠和控制时。 – Forivin

+0

['InitiateShutdown'](http://msdn.microsoft.com/en-us/library/windows/desktop/aa376872(v = vs.85).aspx)API函数看起来像API'shutdown.exe'基于它有许多相同的标志。我想你会发现上面列出的要求可以保证你是直接使用API​​还是通过shutdown.exe来使用API​​(并且我不能真正理解你的“疯狂糟糕的性能”评论 - 你会多久无论如何这样做?)。 –

+0

可能无法使用标准API远程休眠,这可能是为什么'shutdown.exe'不提供该选项。 'PsShutdown'似乎可以通过它的管理员共享将程序复制到远程计算机上工作,至少在'PsShutdown'页面链接的Windows IT Pro文章中描述了这一点。 –

0

据我所知所需的最小,只有这样,才能远程冬眠一台机器将使用与psshutdown相同的方法:将可执行文件复制到远程机器并将其作为系统服务进行安装。

OpenSCManager API允许您指定目标计算机,并且可以使用它返回的句柄来调用CreateService,然后使用StartService。该服务在完成其工作后可以自行删除。