C#创建任务计划

因写的调用DiskPart程序是要用管理员身份运行的,这样每次开机检查都弹个框出来确认肯定不行。搜了下,似乎也只是使用任务计划程序运行来绕过UAC提升权限比较靠谱,网上的都是添加到计算机启动的,不是指定的用户登录到桌面后启动的,于是写了下面这段来自己添加到任务计划里启动:

/// <summary>
/// create task
/// </summary>
/// 需先添加引用TaskScheduler
/// <param name="creator"></param>
/// <param name="taskName"></param>
/// <param name="path"></param>
/// <returns>state</returns>
public static _TASK_STATE CreateLogonTaskScheduler(string creator, string taskName, string path)
{
try
{
if (IsExists(taskName))
{
DeleteTask(taskName);
}

//实例化任务对象
TaskSchedulerClass scheduler = new TaskSchedulerClass();
scheduler.Connect(null, null, null, null);//连接
ITaskFolder folder = scheduler.GetFolder("\\");
//设置常规属性
ITaskDefinition task = scheduler.NewTask(0);
task.RegistrationInfo.Author = creator;//创建者
task.RegistrationInfo.Description = "描述信息";//描述
task.Principal.RunLevel = _TASK_RUNLEVEL.TASK_RUNLEVEL_HIGHEST; //使用最高权限运行
//设置触发器
ILogonTrigger tt = (ILogonTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_LOGON); //触发器里的开始任务,其他开始任务方式用的是其他接口
tt.UserId = Environment.MachineName + "\\" + creator; //特定用户
//设置操作
IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
action.Path = path;
//其他设置
task.Settings.ExecutionTimeLimit = "PT0S";
task.Settings.DisallowStartIfOnBatteries = false;
task.Settings.RunOnlyIfIdle = false;

//注册任务
IRegisteredTask regTask = folder.RegisterTaskDefinition(
taskName, //计划任务名称
task,
(int)_TASK_CREATION.TASK_CREATE, //创建
null, //user
null, // password
_TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN, //Principal.LogonType
"");

IRunningTask runTask = regTask.Run(null);
return runTask.State;

}
catch (Exception ex)
{
throw ex;
}

}

参考:

使用C#创建计划任务(How to create a Task Scheduler use C# )
http://www.cnblogs.com/tonge/p/4410066.html
Security Contexts for Tasks
https://msdn.microsoft.com/en-us/library/windows/desktop/aa382140(v=vs.85).aspx

时间: 2024-10-26 09:03:10

C#创建任务计划的相关文章

Windows Server 2008 R2: 创建任务计划

task Scheduler 在业务复杂的应用程序中,有时候会要求一个或者多个任务在一定的时间或者一定的时间间隔内计划进行,比如定时备份或同步数据库,定时发送电子邮件等. 创建一个任务计划: 开始Start菜单,在Search programs and files中键入Task Scheduler 在Task Scheduler中,点击Task Scheduler Library,在中间窗口中可以看到所有已创建的Scheduled Tasks. 在Actions Pane中,选择Create T

创建周期性计划任务cron

创建周期性计划任务cron 目 录 一.周期性任务计划: cron 二.系统计划任务 三.用户创建计划任务 四.控制用户执行计划任务 本篇中主要从具体的实例中说明怎样创建计划任务 一.周期性任务计划: cron (1)计划周期性执行的任务提交给crond,到指定时间会自动运行 系统cron任务:系统维护作业 (2)相关的程序包:默认已安装 使用 rpm –qi cronie  查看相关包具体信息 cronie: 主程序包,提供crond守护进程及相关辅助工具 cronie-anacron: cr

远程推送脚本,创建任务计划

1 #############################脚本功能及说明####################################### 2 #该脚本用来在各台服务器上运行创建任务计划,可以将位于本地的脚本拷贝到远程服务器 3 #通过查看Task_Result.txt文件可以查看任务计划的创建结果,如果任务计划创建失败,控制台会有输出 4 #创建时间:2014-10-21 5 6 #################################################

Skype for business企业语音配置之二创建拨号计划

Skype for business企业语音配置之二 创建拨号计划 Skype for Business Server企业语音中的出站语音路由,包括呼叫路由设置.拨号计划.规范化规则.语音策略.PSTN 用法记录和语音路由. 拨号计划和规范化规则 拨号计划是一组指定的规范化规则,可将指定位置.单个用户或联系人对象的电话号码转换为统一标准 (E.164) 格式,以进行电话授权和呼叫路由. 规范化规则定义如何针对每个指定的位置.用户或联系人对象来路由以不同格式表示的电话号码.同一拨号串的解析和转换可

Android编程示例:创建机场计划模拟器应用程序

在本文中,我们将演示如何使用Android Studio和Java编程语言创建一个示例Android应用程序,从"临时"实现高级响应用户界面的功能.本文中讨论的应用程序将实现机场航班时刻表模拟的功能.在开发生命周期中,我们将实现Android应用程序的响应式用户界面,用于呈现"到达"和"离开"航班的列表,并提供动态生成和更新实时模式中的航班信息的功能. 我们将大力强调几个Java语言编程方面,并深入研究允许我们提供高级Android应用程序的编程

sql server创建备份计划

对于备份计划,在sql server中微软提供了相应的功能集,通过Maintenance Plans向导可以对数据库进行相关维护工作. 通过下图的向导,可以进行如定期备份和清除工作. 前提是安装介质包含了sql server维护的功能,并且正常启动了sql server agent服务.而在express版本中并没有提供维护计划功能集. 而对于express版本,我们可以通过windows的任务计划来实现备份操作. 首先我们写一串sql语句,用作备份清理计划. 1 --bk-- 2 declar

创建任务计划,直接执行脚本可以成功,但是结合任务计划就失败

遇到个问题,我想实现一个软件在固定时间自动先结束自身进程之后重启软件.但是在单独执行脚本的时候可以成功,介乎计划任务就一直提示这个: windows server 2003设置方式如下: window server 2008设置方式如下:

windows创建任务计划(周期执行bat脚本)

https://jingyan.baidu.com/article/ca00d56c767cfae99febcf73.html windows找到任务计划程序: 这台电脑->管理 原文地址:https://www.cnblogs.com/qlqwjy/p/8407107.html

在Spring3中使用注解(@Scheduled)创建计划任务

Spring3中加强了注解的使用,其中计划任务也得到了增强,现在创建一个计划任务只需要两步就完成了: 创建一个Java类,添加一个无参无返回值的方法,在方法上用@Scheduled注解修饰一下: 在Spring配置文件中添加三个<task:**** />节点: 最后说明一下,第一步创建的Java类要成为Spring可管理的Bean,可以直接写在XML里,也可以@Component一下 计划任务类: /** * com.zywang.spring.task.SpringTaskDemo.java