C# Microsoft.Win32.TaskScheduler方式创建任务计划程序报错: System.ArgumentException: (12,21):UserId:Account...

使用Microsoft.Win32.TaskScheduler创建任务计划程序可参考本人之前的一篇文章:https://www.cnblogs.com/log9527blog/p/17329755.html

最新发现个别账户使用Microsoft.Win32.TaskScheduler创建任务计划程序报错:System.ArgumentException: (12,21):UserId: Account

  1. 一种情况是账户名过长(有可能日语空格字节数太多导致)
  2. 反编译TaskService.RootFolder.RegisterTaskDefinition方法,因为账户原因,所以定位账户入参的去向

     再反编译User的构造函数,发现报错的账户最终会执行NTAccount.Translate

     所以把这段逻辑拿出来,传入账户名,发现抛异常了,查询微软官方文档

    IdentityNotMappedException(身份未映射异常)是指当一个用户的身份在系统中无法被映射为一个有效的标识时,抛出的异常。这通常发生在以下情况下:

    1. 用户的账户已被删除或禁用;
    2. 用户没有被授权访问某个资源或执行某个操作;
    3. 用户的标识信息(如用户名或密码)不正确;
    4. 该用户的身份在系统中没有被配置。

    解决此问题的方法包括检查用户的帐户状态,确保用户有权访问所需资源,验证用户的标识信息是否正确,并确保该用户的身份在系统中正确地配置。

但是对比另一个账户除了名称,没有任何区别,所以怀疑是该账户名与系统的一个域名相同导致,具体原因有大佬知道了麻烦告知

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用 TaskScheduler.dll 可以很方便地创建、修改和删除 Windows 任务计划。以下是一个简单的 C# 示例,演示如何使用 TaskScheduler.dll 创建一个每天执行一次的任务计划: ```csharp using System; using System.IO; using Microsoft.Win32.TaskScheduler; class Program { static void Main(string[] args) { // 创建一个新的计划任务对象 using (TaskService taskService = new TaskService()) { TaskDefinition taskDefinition = taskService.NewTask(); // 设置任务基本属性 taskDefinition.RegistrationInfo.Description = "My Daily Task"; taskDefinition.Principal.LogonType = TaskLogonType.InteractiveToken; taskDefinition.Settings.Enabled = true; // 创建触发器,每天执行一次 DailyTrigger dailyTrigger = new DailyTrigger(); dailyTrigger.Repetition.Interval = TimeSpan.FromDays(1); dailyTrigger.StartBoundary = DateTime.Today.AddHours(9); // 每天 9 点执行 taskDefinition.Triggers.Add(dailyTrigger); // 创建操作,将本地文件复制到远程位置 string sourceFile = @"C:\temp\test.txt"; string destinationPath = @"\\remote\share\test.txt"; CopyAction copyAction = new CopyAction(sourceFile, destinationPath, true); taskDefinition.Actions.Add(copyAction); // 注册任务计划 taskService.RootFolder.RegisterTaskDefinition("My Daily Task", taskDefinition); } } } ``` 在上面的示例中,我们创建了一个名为“My Daily Task”的任务计划,每天 9 点执行。操作是将本地文件复制到远程位置。你可以根据自己的需求修改代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值