Windows任务计划:处理执行帐户的密码更改

时间:2016-03-15 12:33:12

标签: .net batch-file scheduled-tasks installshield

我创建了一个Installshield MSI,它在WinServer 2008或Vista(或更高版本)Windows操作系统上部署了几个.NET控制台应用程序。

安装过程在本地管理员帐户下运行。

在安装过程中,Installshield MSI会提示admin输入密码,并在DOS命令中使用此密码创建多个计划任务,这些任务将在管理员帐户下编程,运行和执行。

我不禁觉得有一种更好的方法来处理这些任务的创建,而无需输入密码或使用SYSTEM帐户而不会创建安全漏洞。

安装帐户的密码也可能过期,因此我正在尝试找出一种更实用的方法来创建这些计划任务。

计划任务必须启动访问SQL CE 4.0数据库的.NET控制台应用程序,为外部邮件服务器创建SMTP / POP3客户端,在本地系统HD中写入文件。

有关如何执行最佳练习计划任务的任何链接或帮助,

此致

1 个答案:

答案 0 :(得分:0)

我假设您正在调用SCHTASKS来创建计划任务。

选项1:使用SYSTEM帐户

SCHTASKS /Create /RU SYSTEM /SC DAILY /ST 00:00:00  /TN "MyTaskName" /TR "MyConsoleApp.exe"

这是推荐的方法,但它有一些限制:

  1. 该程序可以匿名访问数据库和电子邮件,或使用其他人, 预先定义的帐户。
  2. 该程序不需要特定于用户的环境变量或注册表设置。
  3. 该程序具有相应的文件系统权限 应用程序正在写入的文件夹(安装可以处理它)。
  4. 选项2:使用特定帐户

    SCHTASKS /Create /RU username /RP password /SC DAILY /ST 00:00:00  /TN "MyTaskName" /TR "MyConsoleApp.exe"
    

    如果您依赖应用程序的用户上下文登录数据库并发送电子邮件,通常的方法是在安装开始时询问用户提供凭据,并提醒他任何将来的密码更改还需要更新相关的计划任务。这也有其他含义:

    1. 'disabledomaincreds'安全策略必须设置为false 要运行的命令(您可以将其设置回原始值 运行之后)。您可以通过阅读来检查和更改策略 并编辑注册表值 HKLM\System\CurrentControlSet\Control\Lsa

    2. 用户必须具有“以批处理登录”权限。这可以通过运行:ntrights.exe + r SeBatchLogonRight -u“username”

    3. 来完成