场景
winform程序需要在启动时自启动,可通过将exe快捷方式添加到自启动目录下,或者通过修改注册表添加启动项的方式。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
实现
使用添加快捷方式到启动目录的方式
Windows下怎样使用bat设置Redis和Nginx开机自启动:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108314671
参考以上流程,将.exe创建快捷方式,并将快捷方式移动或复制到如下目录
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
使用修改注册表的方式
通过将启动路径添加到注册表的方式,在程序启动时执行写入注册表的操作,在下次重启时则会自动启动。
但是操作注册表需要管理员权限,所以即使是自动启动后,仍然手动点击确定,赋予管理员权限。
所以根据自己需要,如果仅仅是考虑只让其启动,不用自动执行相关操作等后续,可采用此种,或者考虑从其他层面去掉自启动后
手动确认赋予管理员权限的操作。
否则采用上面的方式。
新建操作注册表的工具类:
using Microsoft.Win32;
using
System;
using System.Windows.Forms;
namespace WinformStudyDemo.com.badao.utils
{
class AutoStartHelper
{
public static void OpenAutoStartUp()
{
//
要设置软件名称,有唯一性要求,最好起特别一些
string name =
"badaodechengxvyuan";
Console.WriteLine("设置开机自启动,需要修改注册表");
string
currentPath = Application.ExecutablePath.ToLower();
try
{
string regPath =
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
var regKey =
Registry.LocalMachine.OpenSubKey(regPath, true);
if (regKey == null)
{
var regKey2 =
Registry.LocalMachine.CreateSubKey(regPath);
regKey2.SetValue(name, currentPath);
regKey2.Close();
}
else
{
string old_path =
(string)regKey.GetValue(name);
if
(old_path == null || !old_path.Equals(currentPath))
{
if (regKey.GetValue(name) !=
null)
{
regKey.DeleteValue(name);
}
regKey.SetValue(name,
currentPath);
}
}
regKey.Close();
}
catch (Exception exception)
{
Console.WriteLine("开机自启动设置失败");
Console.WriteLine(exception.Message);
}
}
}
}
工具类方法逻辑说明:
获取注册表对应项的所有子项,如果为空,则新建名称为自定义的名称,值为当前路径的子项。
否则存在的话则尝试获取自定义名称的项,如果为空则新建,不为空且与当前值不一致则删除并新建。
修改Program.cs
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//设置开机自启动
com.badao.utils.AutoStartHelper.OpenAutoStartUp();
Application.Run(new Form1());
}
此时直接执行则不生效,需要申请管理员权限。
右击项目-新建项-常规-应用程序清单文件
修改如下代码赋予管理员权限申请
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />修改位置
则使用VS本地运行时则会提示
需要使用管理员启动VS
用管理员启动VS即可
运行成功之后,则会在注册表中编辑-查找中搜索到
在启动时就会进行管理员运行提示
标签:name,管理员,注册表,自启动,快捷方式,regKey From: https://www.cnblogs.com/badaoliumangqizhi/p/17981738