C#应用在Windows实现自启动

本文将讲解 C# 应用在 Windows 系统中通过自动设置注册表的形式的形式实现开机自启动,这也是 Windows 系统推荐的做法。

关键点

Windows系统上实现开机自启动,我们可以采用注册表来完成,对应的注册表键为 前缀\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,其中的前缀部分对应了应用的启动权限,在注册表中主要有两个重要的前缀,一个是本地主机,键名为:HKEY_LOCAL_MACHINE,另一个是当前用户,键名为:HKEY_CURRENT_USER,当我们把内容注册到当前用户键下时,如果以其他用户登录系统是无法正确访问数据的,所以如果我们想要为机器上所有用户都保留访问权限时,就需要把内容注册到本机主机这个键下面。

实现

我们使用 dotnet 自带的 RegistryKey 来操作注册表,注意这时候程序需要管理员权限或者更高权限才能正常运行,否则会出错。

首先是找到对应的键,然后设添加一个键值,键名为软件的名称,内容为应用的具体路径具体,当我们添加完成后,可以在任务管理器或者设置中的启动项管理中看到我们刚设置的自启动软件。

代码如下:

var exeName = "我的软件";
var path = "软件路径";
RegistryKey local = Registry.LocalMachine;
RegistryKey key = local.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
if (key == null)
{
    local.CreateSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run");
}
//若开机自启动则添加键值对
if (isStart)
{
    // 注意这里需要给内容加上双引号,防止出错
    key.SetValue(exeName, $"\"{path}\"");
    key.Close();
}
else//否则删除键值对
{
    string[] keyNames = key.GetValueNames();
    foreach (string keyName in keyNames)
    {
        if (keyName.ToUpper() == exeName.ToUpper())
        {
            key.DeleteValue(exeName);
            key.Close();
        }
    }
}
发布时间:2023-03-18
其他阅读

未来设计趋势-Bento Layout\便当布局

前几天找网站设计的灵感的时候,发现一个介绍2024年网站设计趋势的视频,里面介绍了一个叫 Bento Layout 的趋势,今天就给大家分享一下什么是 Bento Layout,中文称为“便当布局”。

查看原文

记录一次Unity中的同步问题

在以前做的数字孪生应用中,使用的 socket 进行定制协议开发,服务和 Unity 客户端之间可以互相进行通信,在开发时代价太大,除了正常制定数据协议外,还需要针对粘包定制切包协议。在WEB化的过程中,准备把原有的数字孪生服务端进行迁移,使用全新的 asp.net core 进行开发,双方使用 signalR 进行数据交互。

查看原文

电脑版微信支持抢红包和发朋友圈了

微信迎来史诗级加强——支持抢红包,微信迎来史诗级加强——支持发布朋友圈。

查看原文

Visual Studio 2022激活密钥

Visual Studio 2022 Pro 激活密钥:

查看原文

使用Cherry Studio搭配DeepSeek构建知识库

上篇文章,介绍了怎么在本地部署DeepSeek大模型服务,但是仅限于对话聊天,本文在之前的基础上,用DeepSeek搭配上Cherry Studio来构建个人知识库。

查看原文