【问题标题】:Windows Task Scheduling : handling password change of execution accountWindows 任务计划:处理执行帐户的密码更改
【发布时间】:2023-03-27 11:00:01
【问题描述】:

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

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

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

我不禁觉得有更好的方法来处理这些任务的创建,而无需询问密码,或者可能使用 SYSTEM 帐户并且不会造成安全漏洞。

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

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

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

问候,

【问题讨论】:

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


    【解决方案1】:

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

    选项 1:使用 SYSTEM 帐户

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

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

    1. 该程序可以匿名访问数据库和电子邮件,或使用另一个, 预定义帐户。
    2. 该程序不需要用户特定的环境变量或注册表设置。
    3. 程序对 应用程序正在写入的文件夹(安装可以处理它)。

    选项 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"

    【讨论】:

    • 谢谢,这正是我需要的回应。我已经实现了选项 2,但忘记考虑“disabledomaincreds”的策略值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 2012-01-25
    • 2011-10-11
    • 2021-06-27
    • 2014-11-07
    • 2014-09-14
    相关资源
    最近更新 更多