如何在关闭窗口时安排任务运行

时间:2008-09-19 13:00:41

标签: windows-xp

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

11 个答案:

答案 0 :(得分:85)

执行gpedit.msc(本地政策)

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

答案 1 :(得分:36)

除了Dan Williams的回答,如果您想添加启动/关闭脚本,您需要在计算机配置下查找Windows设置。如果您要添加登录/注销脚本,则需要在用户配置下查找Windows设置。

所以重申丹所说的这些信息,

启动/关闭:

  1. 运行gpedit.msc(本地政策)
  2. 计算机配置 - > Windows设置 - >脚本 - > 启动关机 - >属性 - >添加
  3. 登录/注销:

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

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

答案 2 :(得分:29)

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

  • 从任务计划程序:
      

    开始任务:在事件中   记录:系统
      资料来源:USER32
      EventID:1074

  • 从命令提示符:
      
        

    schtasks / create / tn" taskname" / tr"任务文件" / sc onevent / ec system / mo * [system / eventid = 1074]

      

注释:/ ec选项可从Windows Vista及更高版本获得。 (谢谢@ t2d)

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

  
    
      

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

    
  

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

答案 3 :(得分:5)

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

您可以从命令行关闭 - 因此您的脚本可以非常简单:

c:\directory\myProgram.exe
C:\WINDOWS\system32\shutdown.exe -s -f -t 0

答案 4 :(得分:4)

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

答案 5 :(得分:4)

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

How To Use the Group Policy Editor to Manage Local Computer Policy in Windows XP

答案 6 :(得分:1)

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

(来自谷歌搜索:Windows计划任务在关闭时运行)

答案 7 :(得分:1)

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

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

这是什么

  1. 运行关机流程
  2. 显示提醒
  3. 强制所有正在运行的进程停止
  4. 立即执行

答案 8 :(得分:1)

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

答案 9 :(得分:0)

我还必须启用“为组策略脚本指定最大等待时间”和“在关机脚本运行时显示说明”,以使其对我有用,正如我解释here一样。

答案 10 :(得分:0)

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


为此,您需要在 Task Scheduler 中设置自定义事件过滤器。

触发器 > 新建 > 自定义 > 编辑事件 > 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 > 手动编辑查询

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