C#如何设置程序开机自启动

如果想要将一个exe程序设置为开机自启动,其实就是在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run注册表项中添加一个注册表变量,这个变量的值是程序的所在路径。

具体操作步骤是:

1、使用RegistryKey类的CreateSubKey方法打开HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run变量,如果不存在,这个方法会直接创建。
2、如果是添加一个变量的键值可以使用RegistryKey类的SetValue方法;
如果是删除一个变量的键值可以使用RegistryKey类的DeleteValue方法。

代码: 设置程序开机自启动状态

using System;
using System.Windows.Forms;
using Microsoft.Win32;
namespace RegistryUtil {
       static class Program {
              /// <summary>
              /// 应用程序的主入口点。
              /// </summary>
              [STAThread]
              static void Main() {
                     Application.EnableVisualStyles();
                     Application.SetCompatibleTextRenderingDefault(false);
                     SetAutoBootStatu(true);
              }  

              /// <summary>
              /// 在注册表中添加、删除开机自启动键值
              /// </summary>
              public static int SetAutoBootStatu(bool isAutoBoot) {
                     try {
                            string execPath = Application.ExecutablePath;
                            RegistryKey rk = Registry.LocalMachine;
                            RegistryKey rk2 = rk.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run");
                            if (isAutoBoot) {
                                   rk2.SetValue("MyExec", execPath);
                                   Console.WriteLine(string.Format("[注册表操作]添加注册表键值:path = {0}, key = {1}, value = {2} 成功", rk2.Name, "TuniuAutoboot", execPath));
                            } else {
                                   rk2.DeleteValue("MyExec", false);
                                   Console.WriteLine(string.Format("[注册表操作]删除注册表键值:path = {0}, key = {1} 成功", rk2.Name, "TuniuAutoboot"));
                            }
                            rk2.Close();
                            rk.Close();
                            return 0;
                     } catch (Exception ex) {
                            Console.WriteLine(string.Format("[注册表操作]向注册表写开机启动信息失败, Exception: {0}", ex.Message));
                            return -1;
                     }
              }
       }
}  

需要注意的是:
Windows中微软的注册表信息是分32位和64位的:
32位:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
64位:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft

以下代码

RegistryKey rk = Registry.LocalMachine;  
RegistryKey rk2 = rk.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run");  
rk2.SetValue("MyExec", execPath);

在32位机器上执行,那么没有问题,变量会创建在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下。但是如果在64位机器上执行,会自动创建在
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run

时间: 2024-08-09 19:52:48

C#如何设置程序开机自启动的相关文章

cenOS设置程序开机自启动的方法

cenOS设置程序开机自启动的方法主要有两种 1.把启动程序的命令添加到/etc/rc.d/rc.local 文件夹中. eg1.设置开机启动mysql vim /etc/rc.d/rc.local #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want

CentOS设置程序开机自启动的方法

转自:http://www.centos.bz/2011/09/centos-setup-process-startup-boot/ 在CentOS系统下,主要有两种方法设置自己安装的程序开机启动. 1.把启动程序的命令添加到/etc/rc.d/rc.local文件中,比如下面的是设置开机启动httpd. #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put you

[转]CentOS设置程序开机自启动的方法

在CentOS系统下,主要有两种方法设置自己安装的程序开机启动.1.把启动程序的命令添加到/etc/rc.d/rc.local文件中,比如下面的是设置开机启动httpd. #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the ful

C# 设置程序开机自启动

设置启动 //设置开机自启动 string path = Application.ExecutablePath; RegistryKey rk = Registry.LocalMachine; RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run"); rk2.SetValue("JcShutdown", path); rk2.Close(); rk.Clo

ubuntu下设置程序开机自启动的几种方法

1,这种也是最常用的一种 rcconf: sudo apt-get install rcconf root 下运行: rcconf 功能更全的:sysv-rc-conf sudo apt-get install sysv-rc-conf 运行:sysv-rc-conf 这个改起来很简单,自己试一下就知道了. 2, 直接改/etc/rc0.d ~ /etc/rc6.d和/etc/rcS.d下的东西,S开头的表示启动,K开头的表示不启动, 例如:想关闭vsftpd的开机自动启动,只需sudo mv

如何设置程序开机自启动

step 1. 将程序启动exe发送到桌面快捷方式 step 2. 右击桌面快捷方式,选择属性--高级--勾选用管理员身份运行 step 3. 将快捷方式拖拽到开始菜单--启动栏 原文地址:https://www.cnblogs.com/happy-xiaoxiao/p/8710152.html

设置让程序开机自启动的方法

以下方法均可以让程序开机自启动. 1.    在/etc/rc.d/rc.sysinit 末尾添加命令或要执行的程序脚本该脚本run once at boot time.所以对所有启动级别都有效 2.    在/etc/rc.d/rc.local中添加命令或要执行的程序脚本这个脚本将被执行在所有其他的init脚本执行完成后,默认对2345启动级别有效. 3.    在对应启动级别的/etc/rc.d/rcX.d 做连接文件连接的格式如:ln  -s  /etc/rc.d/init.d/xx  /

Linux将服务设置为开机自启动的方法小结

Linux设置为开机自启动的几种方法小结 和Windows一样,Linux也可以将一些服务设置为开机自启动,这样可以避免每次开机都会去打开某一个服带来的麻烦!Linux开机将服务设置为开机自启动的方法大概有一下几种: 一.ntsysv图形界面设置 ntsysv -> NeWT + SysV ,它是使用 newt 库的 SysV 风格的 runlevel 配置工具,Red Hat公司遵循GPL规则所开发的程序,它具有互动式操作界面,您可以轻易地利用方向键和空格键等,开启,关闭操作系统在每个执行等级

Windows下通过写注册表的方式实现程序开机自启动

程序可以读取同目录下的config.ini文件中的配置来实现开机自启动. config.ini文件地格式实例如下: [Main] KeyName = test ProcessPath = D:\bin\test.exe 其中KeyName字段为写入注册表的表项名称(可以设置为程序名) ProcessPath为程序的完整路径 程序的完整源代码如下. regedit函数实现注册表写入,autopen实现开机自启动. 编译后的程序在此下载:程序下载 #include <stdio.h> #inclu