C# 实现程序开机自启动与卸载注册表项

陈默
陈默
发布时间:2026-10-13| 4人浏览过
原创

在 C# 程序开发中,让软件随系统启动自动运行是一个实用功能。这通常通过修改 Windows 注册表中的 Run 键值来实现。本文将演示如何使用 System.RegistryKey 类向 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 写入和删除数据。

准备与风险提示

修改 HKEY_LOCAL_MACHINE 下的注册表项通常需要管理员权限。此外,直接操作注册表存在系统配置损坏的风险,建议在执行写入或删除操作前备份相关注册表项或创建系统还原点。

添加开机启动项

要实现开机自启动,核心逻辑是获取当前可执行文件的路径,并将其作为值保存到注册表的 Run 键下。以下代码展示了完整的操作步骤:

  1. 确定应用程序路径:使用 Application.StartupPath 结合程序名称和扩展名生成完整路径。
  2. 访问注册表:打开或创建 SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run 键。
  3. 写入值:调用 SetValue 方法,键名为程序标识,值为 exe 的绝对路径。
// 定义命名空间引用
using Microsoft.Win32;
using System.Windows.Forms;

// 1. 获取当前应用程序的完整路径
string strAssName = Application.StartupPath + @"\" + Application.ProductName + @".exe";
string ShortFileName = Application.ProductName;

// 2. 尝试以读写模式打开注册表项
RegistryKey rgkRun = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

// 3. 如果项不存在则创建
if (rgkRun == null)
{
  rgkRun = Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
}

// 4. 设置自启动值
rgkRun.SetValue(ShortFileName, strAssName);

移除开机启动项(卸载)

如果需要在程序中取消开机自启动,或者进行版本更新时清理旧配置,可以执行删除操作。逻辑与添加类似,但最后一步改为删除指定名称的值:

  1. 定位注册表项:同上,确保对同一 Run 键拥有控制权。
  2. 删除值:调用 DeleteValue 方法,移除对应的键名。
// 1. 准备名称
string ShortFileName = Application.ProductName;

// 2. 定位注册表项
RegistryKey rgkRun = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

// 3. 如果项不存在则创建(防止后续删除报错)
if (rgkRun == null)
{
  rgkRun = Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
}

// 4. 删除自启动值(第二个参数 false 表示如果值不存在不抛出异常)
rgkRun.DeleteValue(ShortFileName, false);

关键参数说明

  • Application.StartupPath:返回当前应用程序执行目录的路径。
  • Application.ProductName:通常在项目属性中定义,用于在注册表中显示的程序名称。
  • OpenSubKey(..., true):第二个参数 true 表示赋予写权限,若为 false 则只能读取。

总结

通过上述代码,开发者可以轻松地在 C# WinForm 或 WPF 应用中集成开机自启动功能。请务必注意,由于涉及 HKEY_LOCAL_MACHINE 操作,发布带有此功能的程序时,请提示用户需要以管理员身份运行,以确保能成功写入注册表。

以上就是 C# 实现程序开机启动与卸载的详细方法,更多关于 C# 注册表操作及系统集成的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。