在Winform程序中一般有两种方式实现程序自启动
-
修改计算机注册表的方式
-
将软件的快捷方式创建到计算机的自动启动目录下
这里我们采用第一种方法:修改注册表的形式来实现这一功能
一.创建一个静态类
/// <summary>
/// 程序自启动类
/// </summary>
public static class AutoStart
{
public static void EnableAutoStart(string applicationPath)
{
string appFileName = Path.GetFileName(applicationPath); //WinFormLearnManager.exe
using (RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true))
{
//rk?.SetValue("WinFormLearnManager", applicationPath);
rk?.SetValue(appFileName, applicationPath);
}
//rk.Close(); 不用using的话需要手动close
}
public static void DisableAutoStart(string applicationPath)
{
string appFileName = Path.GetFileName(applicationPath); //WinFormLearnManager.exe
using (RegistryKey rk = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true))
{
//rk?.DeleteValue("WinFormLearnManager", false);
rk?.DeleteValue(appFileName, false);
}
//rk.Close(); 不用using的话需要手动close
}
}
二.使用
string appPath = Application.ExecutablePath;
// 添加自启动
AutoStart.EnableAutoStart(appPath);
// 删除自启动
AutoStart.DisableAutoStart(appPath);
三.注意事项
如果你的程序自启动后有从程序的目录文件读取一些配置信息的话,是需要绝对路径才可以读取到。
string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
string fullPath = Path.Combine(path, "lidarconfig.obj");// 拼接配置文件的绝对路径
网友评论