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

.net Windows任务计划:处理执行帐户的密码更改,.net,batch-file,scheduled-tasks,installshield,.net,Batch File,Scheduled Tasks,Installshield,我创建了一个Installshield MSI,它在WinServer 2008或Vista(或更高版本)Windows操作系统上部署了几个.NET控制台应用程序 安装过程在本地管理员帐户下运行 在安装过程中,Installshield MSI会提示管理员输入密码,并在DOS命令中使用此密码创建多个计划任务,这些任务将在管理员帐户下编程、运行和执行 我不禁觉得有更好的方法来处理这些任务的创建,而无需询问密码或使用系统帐户,也无需创建安全漏洞 安装帐户的密码也可能过期,所以我正试图找出一种更实用的

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

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

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

我不禁觉得有更好的方法来处理这些任务的创建,而无需询问密码或使用系统帐户,也无需创建安全漏洞

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

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

任何关于如何执行最佳实践计划任务创建的链接或帮助


关于,

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

选项1:使用系统帐户

SCHTASKS /Create /RU SYSTEM /SC DAILY /ST 00:00:00  /TN "MyTaskName" /TR "MyConsoleApp.exe"
SCHTASKS /Create /RU username /RP password /SC DAILY /ST 00:00:00  /TN "MyTaskName" /TR "MyConsoleApp.exe"
这是推荐的方法,但有一些局限性:

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

    SCHTASKS /Create /RU SYSTEM /SC DAILY /ST 00:00:00  /TN "MyTaskName" /TR "MyConsoleApp.exe"
    
    SCHTASKS /Create /RU username /RP password /SC DAILY /ST 00:00:00  /TN "MyTaskName" /TR "MyConsoleApp.exe"
    
    如果您依赖应用程序的用户上下文登录数据库并发送电子邮件,通常的方法是在安装开始时要求用户提供凭据,并提醒他将来的任何密码更改也需要更新相关的计划任务。这也有其他影响:

  • 对于,必须将“disabledomaincreds”安全策略设置为false 命令开始工作(您可以将其设置回原始值) 运行之后)。您可以通过阅读来检查和更改策略 和编辑下的注册表值
    HKLM\System\CurrentControlSet\Control\Lsa

  • 用户必须具有“批量登录”权限。这可以通过运行:ntrights.exe+r SeBatchLogonRight-u“username”来完成


  • 谢谢,这是我需要的回应。我已经实现了选项2,但忘记了考虑“disabledomaincreds”的策略值。