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
其他阅读

WPF中开启虚拟化提高性能

WPF(Windows Presentation Foundation)是一个强大的框架,它能创建高度响应和美观的桌面应用程序。然而,当处理大量数据时,性能问题可能变得显著。为了解决这些问题,我们可以利用虚拟化来提升WPF应用的性能。

查看原文

游记 | 山城重庆

最近都在忙着推进中物视的事情,还挺忙的,最近昆明的天气比较难受,工作日都是晴天,到了周末就下雨。刚好碰上在重庆有一个会议需要参加,趁着这个机会就去重庆旅游。

查看原文

JavaScript构建一个Markdown解析器

Markdown是一种轻量级标记语言,以简单易读的语法和可生成丰富多彩的内容,受到开发者们的青睐。无论是文档编写,还是博客传记都广泛使用到Markdown。本文介绍试用JavaScript来构建一个Markdown解析器,解锁Markdown的强大之处。

查看原文

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

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

查看原文

在ASP.NET Core中使用过滤器

ASP.NET Core是一个高性能的Web开发框架,过滤器(Filter)在ASP.NET Core中被用于路由方法之上,可以在路由方法执行前后完成一些额外的操作。本文将会介绍在ASP.NET Core中使用 IActionFilter 实现过滤器并读取路由方法中的参数。

查看原文