0

我同意,我们可以以编程方式关闭客户端机器。但假设我的机器配置了 Windows server 2008 r2。与普通客户端操作系统机器相比,关闭任何服务器机器并不容易。因为我们需要停止服务,停止正在运行的进程,最后我们需要向操作系统确认此关闭过程是“计划”用于关闭事件跟踪器的。那么我们可以从 c# 控制台应用程序中做到这一点吗?我必须为此做什么程序?

编辑: 我很感谢所有的答案。但是我在写这个问题时错过了一件事情,只有在机器无人看管 120 分钟时才能执行此关机。那么有没有其他流程可以检查机器的出勤情况?这样我就会调用关机过程。

4

7 回答 7

2

您可以使用shutdown.exeWindows 的命令执行此操作:

Process.Start("shutdown.exe", "/l /t:0");

如果您只是想摆脱输入关机原因的对话框,您可以相应地配置您的注册表:

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Reliability]
"ShutdownReasonOn"=dword:00000000
于 2011-08-03T11:18:22.320 回答
1

您可以使用Process类调用一个名为Shutdown的应用程序。

它还可以重新启动机器,设置日志消息并重新启动远程机器(我认为)

于 2011-08-03T11:17:23.883 回答
1

shutdown.exe 不适合您吗?请参阅http://technet.microsoft.com/en-us/library/cc770416.aspx

于 2011-08-03T11:18:10.740 回答
1

您需要Process.Start("shutdown",...);在该机器上运行(其中 ...- 是参数字符串)。

于 2011-08-03T11:18:32.693 回答
1

Windows Server 2008、Windows Vista 和 Windows 7 上的 UAC 会阻止来自非提升进程的“shutdown.exe”。尝试以管理员权限运行您的应用程序。

于 2011-08-03T11:20:25.670 回答
1

在 Sysinternals Suite 中,有所有必要的工具来终止进程、关闭服务和关闭操作系统。如果你没有看它,你会从这里: http ://technet.microsoft.com/en-us/sysinternals/bb842062

于 2011-08-03T11:26:37.853 回答
1

您可以p/invoke InitiateSystemShutdownEx允许您指定事件跟踪的原因和消息以及 UI 对话框的管理。

于 2011-08-03T11:27:29.807 回答