代码之家  ›  专栏  ›  技术社区  ›  Crippeoblade

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

  •  95
  • Crippeoblade  · 技术社区  · 16 年前

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

    12 回复  |  直到 2 年前
        1
  •  94
  •   Fabian Röling Dan Williams    8 年前

    执行gpedit.msc(本地策略)

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

        2
  •  42
  •   Brett Pennings    11 年前

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

    因此,重申丹所说的话,包括这些信息,

    启动/关闭:

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

    登录/注销:

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

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

        3
  •  36
  •   Oz Edri    6 年前

    对于那些更喜欢使用任务调度器的人来说,可以通过将任务设置为在事件查看器中的系统日志中的事件1074被记录后运行,来安排任务在重启/关闭后运行。 然而,它只适用于非常短的任务,只要系统重新启动/关闭,它就会运行,通常只需要几秒钟。

    • 从任务计划程序中:

      开始任务:在一个事件上
      日志:系统
      来源:USER32
      活动ID:1074

    • 在命令提示符下:

      schtasks/create/tn“taskname”/tr“task file”/sc onevent/ec-system/mo*[系统/eventid=1074]

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

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

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

    然而,这并不意味着它没有运行。

        4
  •  5
  •   Neil Neyman    16 年前

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

        5
  •  5
  •   Kibbee    16 年前

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

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

        6
  •  5
  •   user229044    12 年前

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

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

    c:\directory\myProgram.exe
    C:\WINDOWS\system32\shutdown.exe -s -f -t 0
    
        7
  •  2
  •   Matthew Smith Anupam Hayat Shawon    7 年前

    我建议你创建一个.bat文件的快捷方式(例如在桌面上),当你想关闭电脑(并运行.bat文件)时,点击你创建的快捷方式。完成此操作后,编辑.bat文件,并将这行代码添加到末尾或需要的地方:

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

    这是干什么的

    1. 运行关机过程
    2. 显示警报
    3. 强制所有正在运行的进程停止
    4. 立即执行
        8
  •  1
  •   devinmoore    16 年前

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


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

    触发器>新建>自定义>编辑事件>可扩展置标语言

    并粘贴以下内容:

    <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>手动编辑查询

    粘贴代码,并为其命名 仅限断电事件 在任务计划程序中尝试之前。

        9
  •  1
  •   Wo'O Ideafarm    6 年前

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

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

        10
  •  1
  •   Ste    4 年前

    在Windows 10 Pro上,可以注册批处理文件;不需要注册cmd.exe并将bat文件指定为参数的解决方法。我刚刚完成了这项工作,注册了关闭脚本和启动(引导)脚本,它奏效了。

        11
  •  0
  •   Roald    5 年前

    我还必须启用“指定组策略脚本的最长等待时间”和“在关闭脚本运行时显示其中的说明”,以便在我解释时对我有效 here .