You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#创建Windows任务:如何取消勾选‘不存储密码’选项?

解决Windows任务计划“不存储密码”选项取消勾选的问题

要取消勾选“不存储密码。任务将仅能访问本地资源”选项,核心是让任务计划存储用户密码,对应使用TaskLogonType.Password登录类型,同时确保注册任务时正确传递用户名和密码参数。

问题分析

你尝试的几种登录类型中:

  • ServiceAccount:对应系统内置服务账户(如Local System),这类账户无需密码,该选项状态对其不适用。
  • S4U:正是对应勾选“不存储密码”的场景,任务仅能访问本地资源,不会存储密码。
  • InteractiveTokenOrPassword:需要用户交互式登录,不符合后台任务需求。
  • Password:才是需要存储密码、允许任务访问网络资源的正确类型,但你之前代码中错误将LogonType设为ServiceAccount,导致参数冲突。

修正后的代码

TaskDefinition td = TaskService.Instance.NewTask();
DailyTrigger dt = new DailyTrigger();
dt.StartBoundary = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, task.Hour, task.Minute, 0);
dt.DaysInterval = 1;
dt.Enabled = true;

td.RegistrationInfo.Author = "Me";
td.RegistrationInfo.Description = "MyTask";
td.Actions.Add(new ExecAction(task.ActionPath));

// 设置为Password登录类型,触发系统存储密码,取消“不存储密码”选项
td.Principal.LogonType = TaskLogonType.Password;

// 注册任务时传递用户名和密码,确保参数匹配
TaskService.Instance.RootFolder.RegisterTaskDefinition(
    "MyTask", 
    td, 
    TaskCreation.Create, 
    ConfigurationManager.AppSettings["UserName"], 
    PassWord.Text,
    TaskLogonType.Password // 显式指定登录类型,与Principal设置保持一致
);

关键说明

  1. 必须将td.Principal.LogonType设为TaskLogonType.Password,明确告知任务计划需要存储用户密码。
  2. 注册任务时必须正确传递用户名和密码,否则密码存储逻辑不生效,任务也无法正常运行。
  3. 若任务已存在,建议用TaskCreation.CreateOrUpdate替代TaskCreation.Create,避免重复创建报错。

内容的提问来源于stack exchange,提问作者Itwasbaloo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 06:35:20