Vista 从设置中安排任务

2023-11-21

我正在使用 Visual Studio 2008 中的安装向导项目部署 C# 应用程序。

让 Windows 安排我的应用程序定期运行(例如每 8 小时)的最简单方法是什么?我更喜欢在应用程序安装期间进行此调度,以简化最终用户的设置。

Thanks!


这需要我进行一些整理,因此这里是从设置项目安排任务的完整文档。

创建部署项目后,您将需要使用自定义操作来安排任务。演练:创建自定义操作

Note:本演练要求您将主输出添加到安装节点,即使您不打算在安装步骤期间执行任何自定义操作。这很重要,所以不要像我一样忽视它。安装程序类在此步骤中进行一些状态管理,并且需要运行。

下一步是将安装目录传递给自定义操作。这是通过自定义操作数据属性。我进入了/DIR="[TARGETDIR]\"对于提交节点(我在提交步骤期间安排我的任务)。MSDN:CustomActionData 属性

最后,您需要访问任务调度 API,或者使用Process.Start打电话schtasks.exe。 API 将为您提供更加无缝和强大的体验,但我选择了 schtasks 路线,因为我有方便的命令行。

这是我最终得到的代码。我将其注册为安装、提交和卸载的自定义操作。

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;
using System.Security.Permissions;
using System.Diagnostics;
using System.IO;


namespace MyApp
{
    [RunInstaller(true)]
    public partial class ScheduleTask : System.Configuration.Install.Installer
    {
        public ScheduleTask()
        {
            InitializeComponent();
        }

        [SecurityPermission(SecurityAction.Demand)]
        public override void Commit(IDictionary savedState)
        {
            base.Commit(savedState);

            RemoveScheduledTask();

            string installationPath = Context.Parameters["DIR"] ?? "";
            //Without the replace, results in c:\path\\MyApp.exe
            string executablePath = Path.Combine(installationPath, "MyApp.exe").Replace("\\\\", "\\");

            Process scheduler = Process.Start("schtasks.exe",string.Format("/Create /RU SYSTEM /SC HOURLY /MO 2 /TN \"MyApp\" /TR \"\\\"{0}\\\"\" /st 00:00", executablePath));
            scheduler.WaitForExit();
        }

        [SecurityPermission(SecurityAction.Demand)]
        public override void Uninstall(IDictionary savedState)
        {
            base.Uninstall(savedState);
            RemoveScheduledTask();
        }

        private void RemoveScheduledTask() {
            Process scheduler = Process.Start("schtasks.exe", "/Delete /TN \"MyApp\" /F");
            scheduler.WaitForExit();
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vista 从设置中安排任务 的相关文章

  • 实体框架 - sql server 表中未设置默认值

    SQL Server 2005 数据库表有一列 createdon 其默认值设置为 getdate 我正在尝试使用实体框架添加记录 createdon 列未更新 我是否错过了实体框架中的任何属性 请提出建议 这是实体框架存在的少数问题之一
  • 代码块调试问题

    我正在尝试在代码块中运行一个简单的链表程序 但我无法运行该程序并且收到以下错误 Active debugger config GDB CDB debugger Default Building to ensure sources are u
  • 递归显式模板实例化以导出库的符号

    在我之前的问题中我问过递归显式模板实例化是否可能 https stackoverflow com questions 7395113 is recursive explicit template instantiation possible
  • C++ 编译器可以对结构中的元素重新排序吗

    C 编译器 特别是 g 可以对结构体的内部元素重新排序吗 我看到一些奇怪的行为 其中我有一个包含如下内容的结构 Struct SomeStruct long someLong long someLongArray 25 unsigned l
  • 管理多个解决方案中存在的 C# 项目的 Nuget 包

    我现在正处于这样的阶段重构疯狂一个有很多的大项目遗留和不稳定的模块 我决定拆分解决方案目前 所有项目 大约有 20 个 而且由于下个月肯定会出现单元测试项目 还会有更多 链接在一起 使其更加独立和细化 通过这种方法 有一些模块 例如需要在多
  • 字典的线程安全

    如果我有一个 Dictionary
  • C# 从整数反序列化枚举

    是否可以从 C 中的 int 反序列化枚举 例如如果我有以下课程 class Employee public string Name get set public int EmployeeTypeID get set 我可以轻松地从 XML
  • C# 委托实例化与仅传递方法引用 [重复]

    这个问题在这里已经有答案了 我有一个简单的问题 与仅传递函数引用相比 实例化 C 委托有什么优势 我的意思是 Why do Thread t new Thread new ThreadStart SomeObject SomeMethod
  • 终止以 System.Diagnostic.Process.Start("FileName") 启动的进程

    我正在尝试创建一个将在特定时间执行操作的应用程序 很像 Windows 任务计划程序 我当前正在使用 Process Start 来启动任务所需的文件 或 exe 我通过调用文件 mp3 启动一个进程 该进程启动 WMP 因为它是默认应用程
  • C# - 如何从 Steam 交易 API 获取图标的 URL(编码)

    以下是 API 为每个项目返回的 XML 部分
  • 可以轻易移动,但不可轻易复制

    是否可以创建类类型 即 普通移动构造 但不是普通复制构造 但仍然可复制构造 普通复制构造 但不是普通移动构造 但仍然可移动构造 可以简单地复制分配 但不能简单地移动分配 但仍然可以移动分配 可以简单地移动分配 但不能简单地复制分配 但仍然可
  • 从动态服务器中抓取 html 列表数据

    哈喽大家好 抱歉提出转储问题 这是我最后的手段 我发誓我尝试了无数其他 Stackoverflow 问题 不同的框架等 但这些似乎没有帮助 我有以下问题 一个网站显示一个数据列表 前面有大量的 div li span 等标签 它是一个很大的
  • 需要帮助将 winform 迁移到 net 5

    我正在将 winform 应用程序从 net core 3 1 移植到 net 5 并收到以下错误 严重性代码 说明 项目文件行抑制状态 错误NETSDK1136 目标平台必须设置为Windows 通常 通过在 TargetFramewor
  • 等效

    这是否保证始终为真 std numeric limits
  • 我使用 tm/mktime 是否错误,如果没有,有解决方法吗?

    我认为下面的程序应该输出从公元 1 年到 1970 年每年第一天到 1970 年的秒数 前面是time t在编译它的系统上 CHAR BIT是一个宏 所以我认为你不能只是复制编译后的可执行文件并假设它是正确的 尽管实际上一切都使用 8 位c
  • ASP.NET Core中间件如何进行DI?

    我正在尝试将依赖项注入到我的中间件构造函数中 如下所示 public class CreateCompanyMiddleware private readonly RequestDelegate next private readonly
  • 对嵌套属性使用 XmlAttributeOverrides

    我试图使用 XmlAttributeOverrides 来控制类序列化后哪些类属性出现在 xml 中 它适用于 根 类上的属性 但不适用于嵌套属性 这是一个简单的例子来说明我想要完成的任务 我的类层次结构如下 public class Ma
  • System.IndexOutOfRangeException:索引超出了数组的范围[重复]

    这个问题在这里已经有答案了 我正在开发一个 ATM 软件作为家庭作业 我想知道今天处理的交易总量 为此我编写了以下代码 public decimal getDayTransaction int accountid string date s
  • 以编程方式连接和断开 USB,“无需拔出和重新插入”

    我需要以编程方式连接和断开 USB 也就是说 我已经插入了USB设备 我需要使用 C NET 应用程序传输文件 该应用程序将监视特定文件夹并将文件从该文件夹传输到 USB 驱动器 我需要在文件传输后断开 USB 设备的连接 并在需要时连接
  • 文件按文件名模式存在

    我在用 File Exists filepath 我想做的是将其替换为模式 因为文件名的第一部分发生了变化 例如 该文件可以是 01 peach xml 02 peach xml 03 peach xml 如何根据某种搜索模式检查文件是否存

随机推荐

  • iOS13 模拟器上的 UIDocumentBrowserViewController 错误“无法为 url 创建 urlWrapper”

    我有一个非常奇怪的问题UIDocumentBrowserViewController在 iOS 13 上测试时 importHandler newDocumentURL move 似乎没有任何原因崩溃 DocumentManager Can
  • 为什么Lucene在索引大文件时会导致OOM?

    我正在使用 Lucene 2 4 0 和 JVM JDK 1 6 0 07 我不断收到OutOfMemoryError Java heap space 当尝试索引大型文本文件时 示例 1 对 5 MB 文本文件建立索引会导致内存不足 最大容
  • 模拟文本输入字段上的退格键

    有人可以提供一个很好的例子来模拟退格键 on a
  • 更改java控制台输出的颜色

    我想知道是否有什么办法可以设置我在 Java 中输出到控制台的文本的颜色 是否特定于系统并不重要 因为该程序只能在我的 Windows 7 x64 笔记本电脑上运行 这个问题 在 java eclipse 控制台中更改颜色几周前被问到 并且
  • 写入Main Bundle 目录。允许吗?

    我非常确定在 iOS 中不可能在主 Bundle 中写入 例如如下操作 NSString path NSBundle mainBundle pathForResource Data ofType plist something xmlDat
  • Three.js 截图

    我需要制作网站的屏幕截图 我尝试使用 html2canvas 和所有它的工作 但问题是我正在使用 THREE WebGLRenderer 和 THREE CSS3DRenderer 用于 webgl 中的 html 所以当我制作屏幕截图时
  • 如何为相同大小分区的 Spark RDD 定义自定义分区器,其中每个分区具有相同数量的元素?

    我是 Spark 新手 我有一个大型元素数据集 RDD 我想将其划分为两个大小完全相同的分区 以保持元素的顺序 我尝试使用RangePartitioner like var data partitionedFile partitionBy
  • 序列化有时是数组的 Json 属性[重复]

    这个问题在这里已经有答案了 有没有什么方法可以在一次操作中序列化从十进制到十进制 的 Json 对象属性 在我的 Json 产品提要中 特价商品表示为数组 正常价格 促销价格 普通商品只是价格 就像这样 product umbrella p
  • C++ 未处理的异常

    如果发生未处理的异常 C 是否提供了一种 显示 可视化内容的方法 我想做的是做一些像assert unhandled exception msg 如果它确实发生 如下面的示例所示 include
  • Android 未解决的主机异常

    我尝试使用以下方法从 Android 应用程序调用 RESTful Web 服务 HttpHost target new HttpHost http ServiceWrapper SERVER HOST ServiceWrapper SER
  • Git 哈希值是如何计算的?

    我试图了解 Git 如何计算 refs 的哈希值 git ls remote https github com git git 29932f3915935d773dc8d52c292cadd81c81071d refs tags v2 4
  • 如何在 Qt 中通过以太网播放流媒体音频?

    我的目标是通过 LAN 网络无延迟或最少延迟地传输 wav 文件 我们还按部分读取服务器计算机上的文件 均为 320 字节 之后我们通过 UDP 发送数据包并将接收写入 jitter buffer 中 抖动缓冲区的大小为 10 为了获得清晰
  • 部署带有嵌入式sqlite的winform应用程序

    我正在部署一个使用 vs 2008 0n XP sp3 构建的 winform 应用程序 我创建了一个带有空架构的数据库 将其放入项目的根文件夹和我选择的属性中Build Action 嵌入式资源 and Copy to Output di
  • iPhone:安装 SSL 连接证书

    我希望我的应用程序在设备上安装 SSL 证书 使其能够访问我的 https 网站 任何建议将不胜感激 谢谢 我发现最好的方法是执行以下操作 1 使用桌面浏览器将证书保存到本地 2 给自己写一封电子邮件 并将证书作为附件 3 在您的 iOS
  • 用于新闻源的 Firebase 扇出结构

    我有一个数据库posts users以及其他节点 例如经典的社交媒体应用程序 我正在继续对我的应用程序实施最佳实践 现在我想重写我的新闻报道 我关注的用户帖子 如 Instagram 中的主页选项卡 我读过一些关于fan out策略 现在我
  • 如何使用 CarrierWave 从 S3 获取真实文件

    我有一个读取文件内容并为其建立索引的应用程序 我将它们存储在磁盘本身中 但现在我使用 Amazon S3 因此以下方法不再有效 事情是这样的 def perform docId document Document find docId if
  • 声明与 TypeScript 一起使用的 JS 库

    有很多类似问题的线程 但据我所知 这个线程是独一无二的 我在用着jQuery 地址插件在我的应用程序中 并想在 TypeScript 文件中使用它 不幸的是 这儿没有绝对打字可用于库的脚本 当我尝试使用 jQuery address 时 我
  • 无法使用 Hibernate/PostgreSQL 将欧洲符号存储到 LOB 字符串属性中

    我在使用 Hibernate 3 6 10 的 PostgreSQL 8 4 中将特殊字符 如欧元符号 写入和读回 LOB 字符串属性时遇到问题 我所知道的是 PostgreSQL 提供了两种不同的方法来在表的列中存储大字符对象 它们可以直
  • 获取最新的ajax请求并中止其他请求

    我一直在寻找 这个问题看起来很简单 但找不到答案 我有多个请求调用不同的网址 但对于每个 url 我只想要一次结果 并且它必须是被调用的同一 url 中的最后一个结果 我现在的问题是 如何只得到最后一个 我看了一下这个 好像是3年前的了 h
  • Vista 从设置中安排任务

    我正在使用 Visual Studio 2008 中的安装向导项目部署 C 应用程序 让 Windows 安排我的应用程序定期运行 例如每 8 小时 的最简单方法是什么 我更喜欢在应用程序安装期间进行此调度 以简化最终用户的设置 Thank