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. 该用户的身份在系统中没有被配置。

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

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

C# WinForm应用程序中使用 `Microsoft.Win32.TaskScheduler` 库创建计划任务后,可以通过以下方式查找或查看该计划任务: 1. **使用任务计划程序管理工具**: - 打开 Windows 自带的“任务计划程序”(Task Scheduler)管理工具。可以通过在“开始”菜单中搜索“任务计划程序”来启动。 - 在左侧的“任务计划程序库”(Task Scheduler Library)中,查找由应用程序创建的任务。通常,任务的名称或描述中会包含创建任务的应用程序或任务标识信息。 - 任务的“操作”(Actions)选项卡中会显示任务触发时执行的操作,例如启动某个程序或脚本的路径。 2. **通过代码查询计划任务**: 使用 `Microsoft.Win32.TaskScheduler` 提供的 API 可以直接在代码中查询已创建的任务。以下是一个示例代码片段,演示如何查找特定任务: ```csharp using Microsoft.Win32.TaskScheduler; using System; class Program { static void Main() { using (TaskService taskService = new TaskService()) { // 查找特定任务 Task task = taskService.FindTask("YourTaskName"); if (task != null) { Console.WriteLine("任务名称: " + task.Name); Console.WriteLine("任务描述: " + task.Definition.RegistrationInfo.Description); Console.WriteLine("任务状态: " + task.State); } else { Console.WriteLine("未找到指定的任务。"); } } } } ``` 在此示例中,`FindTask` 方法用于根据任务名称查找任务。如果找到任务,则输出其名称、描述和状态;否则,输出未找到任务的提示。 3. **查看任务的注册信息**: - 创建任务时,可以通过设置 `RegistrationInfo.Description` 属性为任务添加描述信息,以方便后续查找和识别任务。 - 在任务计划程序中,任务的属性窗口会显示任务的注册信息,包括描述、作者等。 4. **任务触发条件和执行日志**: - 在任务计划程序中,可以查看任务的触发条件(例如时间间隔、系统事件等)以及执行历史记录。这些信息有助于调试任务的执行情况。 通过上述方法,可以方便地查找和查看 C# WinForm 应用程序中使用 `Microsoft.Win32.TaskScheduler` 创建的计划任务[^1]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值