ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Windows自动启动

2022-09-08 09:02:51  阅读:253  来源: 互联网

标签:RegistryKey task run 启动 Windows TASK 自动 null local


经常我们需要设置一个程序运行以后 开机自动启动。代码实现如下

定时任务型

 

public static _TASK_STATE AutoStartup(string creator, string taskName, string path)
{
    try
    {
        //实例化任务对象
        TaskSchedulerClass scheduler = new TaskSchedulerClass();
        scheduler.Connect(null, null, null, null);//连接
        ITaskFolder folder = scheduler.GetFolder("\\");
        //获取所有Task
        IRegisteredTaskCollection tasks = folder.GetTasks(1);
        bool isExists = false;
        for (int i = 1; i < tasks.Count; i++)
        {
            if (tasks[i].Name.Equals(taskName))
            {
                isExists = true;
                break;
            }
        }
        //如果已存在则先删除
        if (isExists)
        {
            folder.DeleteTask(taskName, 0);
        }

        //设置常规属性
        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)
    {
        return _TASK_STATE.TASK_STATE_UNKNOWN;
    }
}
View Code

 

 注册表型

 public static void AutoStart(bool isAuto = true, bool showinfo = true)
        {
            try
            {
                if (isAuto == true)
                {
                    RegistryKey R_local = Registry.CurrentUser;//RegistryKey R_local = Registry.CurrentUser;
                    RegistryKey R_run = R_local.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
                    R_run.SetValue("应用名称", Application.ExecutablePath);
                    R_run.Close();
                    R_local.Close();
                }
                else
                {
                    RegistryKey R_local = Registry.CurrentUser;//RegistryKey R_local = Registry.CurrentUser;
                    RegistryKey R_run = R_local.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
                    R_run.DeleteValue("应用名称", false);
                    R_run.Close();
                    R_local.Close();
                }
            }


             //if (showinfo)
            //      MessageBox.Show("您需要管理员权限修改", "提示");
            // Console.WriteLine("您需要管理员权限修改");
            catch (Exception ex)
            {
                string content = DateTime.Now.ToLocalTime() + " 0001_" + "您需要管理员权限修改" + "\n" + ex.StackTrace + "\r\n";
                LogHelper.logWrite(content);
            }

        }
View Code

 

标签:RegistryKey,task,run,启动,Windows,TASK,自动,null,local
来源: https://www.cnblogs.com/stweily/p/16668247.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有