如何开发Windows计划任务?

问题描述:

我需要一个将日常数据编译为PDF的过程,该过程将被附加到电子邮件中。我已经使用MSSQL在正在开发的应用程序中发送电子邮件,并且希望继续使用MSSQL作为电子邮件处理器。如何开发Windows计划任务?

在我的研究中,我发现这可以通过创建Windows服务来实现。但是,因为我只是真的希望这个过程每天运行一次;保持一个始终有效的Windows服务似乎是矫枉过正的。

我从来没有使用任务调度程序来运行自建应用程序。我想确保我正在以正确的方式开展工作。据我了解,我将不得不...

  1. 在Visual Studio
  2. 项目(项目X)创建一个新项目(项目X)来生成PDF与MSSQL交互,以发送电子邮件
  3. 构建(项目X)到一个EXE
  4. 使用任务计划程序安排EXE运行我需要的任何时间表。

我应该关注哪些安全问题?只有我能想到的是加密我的MSSQL连接字符串;当然,保持EXE不在web应用程序所在的web访问目录中。

预先感谢您的帮助/确认,因为我知道有些人会认为这是一个愚蠢的问题。

我可以看到你没有考虑的唯一的事情是Task Scheduler将运行你的EXE的身份,但是这不应该是太多的关注,看你如何控制环境中的所有东西。

如果要构建Windows服务,可以将其设置为在服务器(数据库驻留在其上)启动时启动。我有一个外部跟踪系统发送电子邮件,可能在一个单独的数据库。服务器启动时,您的服务也会启动。服务会检查是否今天发送了电子邮件。如果没有,建立电子邮件,发送电子邮件,然后在日志中标记它(我假设的数据库表)。然后让服务休眠24小时,然后再次检查(使用事件)。重复。

+0

正如OP所言,Windows服务对于每天只运行一次的进程来说是过量的。 Jon Galloway有一篇很好的文章(http://weblogs.asp.net/jgalloway/archive/2005/10/24/428303.aspx),说明为什么Windows任务计划程序对计划任务更好。 (线索在名称中)。 – mikeagg 2013-11-29 14:26:19

正如Esteban所说:这只是在您的帐户下运行,您是否会保持登录到计算机上?如果是这样,是您最大的安全风险。您可以使用屏幕保护程序来强制进行登录提示,并且很重要的一点是,这不会比注销更安全。但是,我怀疑这会被认为是“最佳实践”。

我会考虑建立一个Windows服务,只需每天醒来一次。他们确实不是很难建立,虽然你想确保有一个好的测试机制(一个独立的类,你编译成单元测试的DLL是一个好主意),因为一旦他们运行测试它们是非常困难的。但不要让服务应用程序的“神秘”或资源使用的想法让你失望。你会很惊讶他们是多么容易。至于资源去...你正在花费更多的资源保持一个完整的Winforms应用程序运行!