设置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