C#客户端(WinForm)开机自动启动实现
1.原理:需要开机自启动的程序,需要将其启动程序的路径写到注册表中指定的文件夹下
- 写入注册表的方式有两种
a.在生成安装程序时配置
b.在程序运行时,动态配置。
方法一:在生成安装程序时配置
右击安装编辑程序,在“视图”菜单中,选择“注册表”。通过右键菜单新建"键",创建出如图所示的路径。
右键Run,新建“字符串值”。为右侧的key命名(在注册表中不能重名),并在属性中指定它的value值。
注:[TARGETDIR]表示在程序的安装路径。
方法二:在程序运行时指定是否开机启动
在程序运行时,通过调用如下方法实现开机启动
public static void AutoStart(bool isAuto)
RegistryKey R_local = Registry.LocalMachine;
RegistryKey R_run = R_local.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
R_run.SetValue("应用名称", Application.ExecutablePath);
RegistryKey R_local = Registry.LocalMachine;
RegistryKey R_run = R_local.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
R_run.DeleteValue("应用名称", false);
MessageBox.Show("您需要管理员权限修改", "提示");
注:该程序的启动项设置到HKEY_Current_User 下,推荐。如果想改在HKEY_LOCAL_MACHINE,只需将CurrentUser改为LocalMachine,即
Rkey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
操作注册表有可能会需要程序有管理员权限,这时候就要在程序以管理员身份启动并运行。此时应进行以下操作。
1、在程序中添加程序清单文件。通过VS添加,右键项目选择添加选择新建项,选择程序清单。如下图。
2、设置UAC 选项。如图。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。