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

如何用VB.NET创建启用“以最高权限运行”的计划任务?

解决VB.NET创建计划任务无法设置“以最高权限运行”的问题

问题根源

设置TaskDefinition.Principal.RunLevel报错,通常是因为默认Principal对象未初始化,直接赋值会触发空引用异常;其次,创建需要最高权限的任务,当前程序必须以管理员身份运行。

修正后的代码

Sub VaultProFullBackupTask()
    Using tService As New TaskService()

        Dim tDefinition As TaskDefinition = tService.NewTask
        tDefinition.RegistrationInfo.Description = "Vault Pro Full Backup"
        tDefinition.Settings.Priority = ProcessPriorityClass.AboveNormal
        
        ' 先实例化Principal对象,再设置最高权限运行级别
        tDefinition.Principal = New Principal()
        tDefinition.Principal.RunLevel = TaskRunLevel.Highest

        Dim tTrigger As New WeeklyTrigger()
        tTrigger.StartBoundary = DateTime.Today.AddDays(2)
        tTrigger.DaysOfWeek = DaysOfTheWeek.Monday
        tTrigger.WeeksInterval = 1

        tDefinition.Triggers.Add(tTrigger)

        tDefinition.Actions.Add(New ExecAction(VaultScriptFolder & "\VaultBackupFull.bat"))

        ' 注册任务时指定登录类型,确保权限生效
        tService.RootFolder.RegisterTaskDefinition(
            "Vault Pro Full Backup", 
            tDefinition, 
            TaskCreation.CreateOrUpdate, 
            "", 
            "", 
            TaskLogonType.InteractiveToken
        )

    End Using
End Sub

关键注意事项

  • 必须实例化Principal:默认TaskDefinition.Principal为Nothing,直接赋值RunLevel会导致空引用错误,需先创建New Principal()。
  • 以管理员身份运行程序:创建包含最高权限的计划任务,当前VB.NET程序必须右键选择“以管理员身份运行”,否则会因权限不足注册失败。
  • 确认NuGet包引用:如果使用的是Microsoft.Win32.TaskScheduler库,需确保已通过NuGet安装该包(这是.NET操作计划任务的常用库)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:50:30