92

如何在 Windows XP 中安排任务在关闭 Windows 时运行。这样我就想在每次关闭 Windows 时运行一个我用 c# 编写的简单命令行程序。当我的计算机关闭时,计划任务中似乎没有执行此任务的选项。

4

11 回答 11

97

执行 gpedit.msc(本地策略)

计算机配置 -> Windows 设置 -> 脚本 -> 关机 -> 属性 -> 添加

于 2008-09-19T13:05:54.963 回答
43

除了 Dan Williams 的回答,如果你想添加一个启动/关机脚本,你需要在Computer Configuration下寻找 Windows Settings 。如果要添加登录/注销脚本,则需要在用户配置下查找 Windows 设置。

因此,重申丹在包含这些信息的情况下所说的话,

对于启动/关闭:

  1. 运行 gpedit.msc(本地策略)
  2. 计算机配置 -> Windows 设置 -> 脚本 ->启动关机-> 属性 -> 添加

对于登录/注销:

  1. 运行 gpedit.msc(本地策略)
  2. 用户配置 -> Windows 设置 -> 脚本 ->登录注销-> 属性 -> 添加

来源:http ://technet.microsoft.com/en-us/library/cc739591(WS.10).aspx

于 2013-09-11T17:25:52.597 回答
37

对于那些喜欢使用任务计划程序的人,可以通过将任务设置为在事件查看器的系统日志中的事件 1074 已记录后运行来安排任务在启动/关闭启动后运行。但是,它只适用于非常短的任务,只要系统重新启动/关闭,它就会运行,这通常只有几秒钟。

  • 从任务计划程序:

    开始任务:关于事件
    日志:系统
    源:USER32
    EventID:1074

  • 从命令提示符:

    schtasks /create /tn "taskname" /tr "task file" /sc onevent /ec system /mo *[system/eventid=1074]

注释:/ec 选项在 Windows Vista 及更高版本中可用。(谢谢@t2d)

请注意,任务状态可以是:

由于用户尚未登录到网络,因此未执行所请求的操作。指定的服务不存在。(0x800704DD)

但是,这并不意味着它没有运行。

于 2014-12-06T01:59:33.917 回答
5

一种解决方法可能是编写一个简单的批处理文件来运行程序,然后关闭计算机。

您可以从命令行关闭——因此您的脚本可能相当简单:

c:\directory\myProgram.exe
C:\WINDOWS\system32\shutdown.exe -s -f -t 0
于 2008-09-19T13:06:23.403 回答
5

如果您运行 GPEdit.MSC,您可以转到计算机配置 -> Windows 设置 -> 脚本,然后添加启动/关闭脚本。这些可以是简单的批处理文件,甚至是完整的 EXE。您还可以在同一工具中调整登录和注销脚本的用户配置。此工具在 Windows XP Home 中不可用。

于 2008-09-19T13:07:47.830 回答
5

上面的帖子中没有提到组策略编辑器。我已经多次使用 GPedit 在启动或关闭时执行任务。以下是 Microsoft 关于如何访问和操作 GPedit 的说明。

如何使用组策略编辑器管理 Windows XP 中的本地计算机策略

于 2008-09-19T13:09:41.210 回答
2

我可以建议做的是创建 .bat 文件的快捷方式(例如在您的桌面上),当您想要关闭计算机(并运行 .bat 文件)时,单击您创建的快捷方式。完成此操作后,编辑 .bat 文件并将这行代码添加到末尾或需要的地方:

c:\windows\system32\shutdown -s -f -t 00

这是做什么的

  1. 运行关机进程
  2. 显示警报
  3. 强制所有正在运行的进程停止
  4. 立即执行
于 2017-08-19T11:00:58.797 回答
2

我在superuser上也发布了这个答案。


为此,您需要在任务计划程序中设置自定义事件过滤器。

触发器 > 新建 > 自定义 > 编辑事件 > XML

并粘贴以下内容:

<QueryList>
  <Query Id="0" Path="System">
    <Select Path="System">
    *[System[Provider[@Name='User32'] and (Level=4 or Level=0) and (EventID=1074)]]
   and 
     *[EventData[Data[@Name='param5'] and (Data='power off')]]
    </Select>
  </Query>
</QueryList>

这将仅过滤掉电源关闭事件。

如果您查看事件查看器,您可以在Windows 日志 > 系统 下的详细信息选项卡 > XML 视图下看到有这个。

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="User32" Guid="{xxxxx-xxxxxxxxxxx-xxxxxxxxxxxxxx-x-x}" EventSourceName="User32" /> 
  <EventID Qualifiers="32768">1074</EventID> 
  <Version>0</Version> 
  <Level>4</Level> 
  <Task>0</Task> 
  <Opcode>0</Opcode> 
  <Keywords>0x8080000000000000</Keywords> 
  <TimeCreated SystemTime="2021-01-19T18:23:32.6133523Z" /> 
  <EventRecordID>26696</EventRecordID> 
  <Correlation /> 
  <Execution ProcessID="1056" ThreadID="11288" /> 
  <Channel>System</Channel> 
  <Computer>DESKTOP-REDACTED</Computer> 
  <Security UserID="x-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxx" /> 
  </System>
- <EventData>
  <Data Name="param1">Explorer.EXE</Data> 
  <Data Name="param2">DESKTOP-REDACTED</Data> 
  <Data Name="param3">Other (Unplanned)</Data> 
  <Data Name="param4">0x0</Data> 
  <Data Name="param5">power off</Data> 
  <Data Name="param6" /> 
  <Data Name="param7">DESKTOP-REDACTED\username</Data> 
  </EventData>
  </Event>

您可以通过单击在事件查看器中使用上面的查询列表代码测试查询

创建自定义视图... > XML > 手动编辑查询

并粘贴代码,在您在任务计划程序中尝试之前将其命名为仅关闭事件。

于 2021-01-31T21:23:59.583 回答
1

您可以运行一个批处理文件来调用您的程序,查看这里的讨论以了解如何操作: http ://www.pcworld.com/article/115628/windows_tips_make_windows_start_and_stop_the_way_you_want.html

(来自谷歌搜索:windows schedule task run at shutdown)

于 2008-09-19T13:04:13.627 回答
1

在Windows 10 Pro上,可以注册批处理文件;不需要注册 cmd.exe 并将 bat 文件指定为参数的解决方法。我只是这样做了,注册了一个关闭脚本和一个启动(引导)脚本,并且它起作用了。

于 2018-11-05T03:54:00.283 回答
0

我还必须启用“指定组策略脚本的最大等待时间”和“在运行时在关闭脚本中显示指令”,以使其对我有用,正如我在此处解释的那样。

于 2019-08-13T06:25:33.577 回答