关闭局域网内的PC

关闭局域网内的PC

再会

介绍一些背景知识,说明我的问题没有任何恶意:我即将实现家庭自动化,并取得了良好的进展:可以使用我的 VB6 应用程序从家中的任何一台 PC 以编程方式打开和关闭几十台设备(还有其他功能,例如锁定设备以防止其被关闭)。

现在,下一步是实现一种自主开发的脚本语言,以自动执行连续任务。该语言在任务文件夹中定义程序。例如,一个名为“晚安”的程序的任务是关闭所有“非重要”机器过夜。

但无论我怎么尝试,我似乎都无法强制我的局域网中的一台 PC 正常关闭(即关闭它,或者最好让它进入休眠状态)。当然我可以切断 PC 的电源,但是……

关闭 /s /m \\ComputerName似乎是自然的选择,但据称它不适用于 Windows XP 之后的远程计算机。它肯定不适用于我的 Windows 8.1 环境:它以“拒绝访问 (5)”终止。正在运行命令因为管理员没有授予我想要的访问权限。

我如何通过 shell 完成我的任务?(或者当然是 VB6,但是如果可以通过 shell 完成,我也应该在 VB6 中进行管理。)

提前致谢!

答案1

关机命令确实有效,但您需要在目标计算机上启用它。因此,请在 Internet 上搜索“远程关机令牌过滤策略”。

其次,您需要在远程计算机上进行身份验证,以便被允许执行决战。关机命令不提供传输登录凭据的功能,因此您需要在关机之前以其他方式发送它们。我建议您为此映射网络驱动器。对我来说效果很好。您不需要为此在目标上创建网络共享,而是使用 IPC$。

注意:您需要使用目标计算机的凭据登录目标!这些凭据的本地权限无关紧要;目标用户甚至可能不存在于本地。并且目标用户必须具有足够的权限才能关闭目标。

答案2

有三种方法可以远程运行 Windows 命令。

  1. 使用 Sysinternals 的 PSExec

  2. 使用 WMI 运行远程命令

  3. 使用 ControlUp 运行远程命令

您可以找到详细信息这里

相关内容