第
C#实现软件开机自启动的示例代码
目录原理简介使用方法完整代码
原理简介
本文参考C#/WPF/WinForm/程序实现软件开机自动启动的两种常用方法,将里面中的第一种方法做了封装成AutoStart类,使用时直接两三行代码就可以搞定。
自启动的原理是将软件的快捷方式创建到计算机的自动启动目录下(不需要管理员权限),这种方法更加通用、限制更少。
使用方法
使用方法如下:
//快捷方式的描述、名称的默认值是当前的进程名,自启动默认为正常窗口,一般情况下不需要手动设置
//设置快捷方式的描述,
AutoStart.Instance.QuickDescribe=软件描述;
//设置快捷方式的名称
AutoStart.Instance.QuickName=软件名称;
//设置自启动的窗口类型,后台服务类的软件可以设置为最小窗口
AutoStart.Instance.WindowStyle=WshWindowStyle.WshMinimizedFocus;
//快捷方式设置true时,有就忽略、没有就创建,自启动快捷方式只能存在一个
//设置开机自启动,true自启动,false不自启动
AutoStart.Instance.SetAutoStart(SysParam.Instance.OnOff);
//设置桌面快捷方式,true创建桌面快捷方式(有就跳过,没有就创建),false删除桌面快捷方式
AutoStart.Instance.SetDesktopQuick(true);
完整代码
引用以下命名空间:
//添加引用,在Com中搜索WindowsScriptHostObjectModel
usingIWshRuntimeLibrary;
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Diagnostics;
usingSystem.IO;
AutoStart类代码:
publicclassAutoStart
#region公开
///summary
///唯一实例,也可以自定义实例
////summary
publicstaticAutoStartInstance{get;privateset;}=newAutoStart();
///summary
///快捷方式描述,默认值是当前的进程名
////summary
publicstringQuickDescribe{get;set;}=Process.GetCurrentProcess().ProcessName;
///summary
///快捷方式名称,默认值是当前的进程名
////summary
publicstringQuickName{get;set;}=Process.GetCurrentProcess().ProcessName;
///summary
///自启动窗口类型,默认值是正常窗口
////summary
publicWshWindowStyleWindowStyle{get;set;}=WshWindowStyle.WshNormalFocus;
///summary
///设置开机自动启动-只需要调用改方法就可以了参数里面的bool变量是控制开机启动的开关的,默认为开启自启启动
////summary
///paramname=onOff自启开关/param
publicvoidSetAutoStart(boolonOff=true)
if(onOff)//开机启动
//获取启动路径应用程序快捷方式的路径集合
ListstringshortcutPaths=GetQuickFromFolder(systemStartPath,appAllPath);
//存在2个以快捷方式则保留一个快捷方式-避免重复多于
if(shortcutPaths.Count=2)
for(inti=1;ishortcutPaths.Count;i++)
DeleteFile(shortcutPaths[i]);
elseif(shortcutPaths.Count1)//不存在则创建快捷方式
CreateShortcut(system