首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找关闭-s的执行时间

查找关闭-s的执行时间
EN

Stack Overflow用户
提问于 2017-03-09 21:24:19
回答 2查看 1.9K关注 0票数 0

我有一台主计算机,它知道什么时候停电。然后,该主计算机将使用内置的“/m \ computer main /s”命令告诉所有工作站通过网络关机。这台主计算机还将告诉各个工作站使用相同的shutdown /m \\computername /r机制重新启动。

每个工作站都有一个脚本,在执行时保存所有重要数据。

每个工作站在被告知通过网络(shutdown /m \\computername /sshutdown /m \\computername /r)关闭或重新启动时必须执行其脚本。

Idea1:

  • 使用WM_QUERYENDSESSION事件找出关闭/重新启动发生的时间。
  • 取消关机/重新启动。
  • 运行脚本。
  • 继续关机/重新启动(Problem:我看不到一种合理的方法来确定主计算机是否已发出关机或重新启动。)

Idea2:

  • 等待直到shutdown.exe进程存在。
  • 检索该进程的命令行参数。
  • 扼杀这一过程
  • 运行脚本。
  • 使用检索到的参数运行shutdown.exe。

Problem:shutdown.exe实际上并没有被执行。即使您在本地运行一个简单的shutdown -s -t 30,也不会。

Idea3:

  • 嗅探到的网络流量。
  • 查找关闭-m数据包
  • ..。

Problem:我不知道使用的是什么协议,以及数据包是如何格式化的。

Idea4:

  • 监视事件日志
  • 希望它包含了关于已经发布了什么样的关闭的信息。

Problem:我不知道这是否会在哪里被记录。

PS:

我不想使用PsExec。工作站必须自己执行脚本。

EN

回答 2

Stack Overflow用户

发布于 2017-03-15 20:14:19

当您只需要设置Windows关闭脚本时,为什么要更加努力呢?

很简单:

执行gpedit.msc (本地策略),然后转到: Windows设置、->脚本、->关机、->属性、->添加,在这里添加脚本。它将始终执行关机。如果您只想在从服务器端调用关机时才运行它,最好创建非常简单的c# (或其他)程序来运行脚本,然后关闭计算机。在您拥有这个之后,您可以从服务器调用它。

警告:组策略启动和关闭不会执行,当使用快速引导时(默认情况下在windows 8和更高版本中启用)。在这种情况下,只有重启或强制关闭(从命令提示符)关闭真正的计算机。在所有其他情况下(启动菜单关闭),计算机内核休眠,并在启动时重新启动,而GPO启动和关机启动则被忽略。

更多的here

编辑:

当您有关机脚本并且不想创建某个程序时,您可以签入关机脚本如果是某个文件,您创建的是什么存在,如果没有,那么备份,如果是,继续正常关闭和删除该文件。当您创建另一个脚本并将其放置在桌面或任何地方,并将其编程到创建文件并运行shutdown.exe时,您将在没有备份的情况下正常关闭,但是如果服务器调用关机,它将进行备份。

票数 1
EN

Stack Overflow用户

发布于 2017-03-21 07:15:53

您可以在每个工作站(例如c#.net )中的始终运行的应用程序中检测Windows关机,在关闭之前,运行脚本,然后继续关闭。将事件处理程序方法附加到SystemEvents.SessionEnded事件。看看here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42705682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档