设置Window开机自启

  • 一 系统启动文件夹

  Win7、win8的系统,在系统的开始菜单里,有个“启动”文件夹,WIn10没有了,但是可以使用shell:startup【C:\Users\admin\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup】打开,

是对应用户下启动 ,系统启动路径,这个启动会不会因为不同账号登录 其它账号下会不会启动没有细测结果。

【今天有时间测试以后 这个仅当前账号下登录才启动,如果想要全局的 就使用 shell:Common Startup  打开的是全局的  】

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

因为方法二有这方面的功能。

  • 二  使用计划任务自启动

  我的电脑 -> 管理 -> 系统工具 -> 任务计划程序  右边 创建任务 设备exe或是bat 

  tasklist|find /i "XX.exe" && echo started || start "" "c:\Debug\XX.exe"  这是一句常用的bat启动,可以灵活定制启动

         

  对应的C#代码如下

///项目引用 C:\Windows\System32\taskschd.dll
public static _TASK_STATE AutoStartup(string creator, string taskName, string path)
        { 
//实例化任务对象
                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, // password
                _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN, //Principal.LogonType
                "");
  IRunningTask runTask = regTask.Run(null);
                return runTask.State;
 }
            catch (Exception ex)
            {
                throw ex;
            }
}
                     

 

 

  • 三 注册表

  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 下新建字符串键 键名英文,值为启动的exe或bat

*******顺手记录一下WIN+ L键的快捷方式和程序调用的原因

%windir%\system32\rundll32.exe user32.dll,LockWorkStation

 

posted @ 2022-08-26 10:24  stweily  阅读(704)  评论(0编辑  收藏  举报