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使用云母材质

在最新的Windows 11 OS中,微软为流畅设计(Fluent Design)带来了新的云母材质,云母材质一种不透明的动态效果,微软将其作为Windows 11应用窗体的默认材质。

查看原文

C#完成一个应用内的消息中心

本文会讲解如何使用 C# 完成一个应用内部的消息中心(事件总线),事件驱动最大的好处就是可以很大程度的解耦合,松散结构。

查看原文

C#中new和override的区别

在C#编程语言中,new 和 override 是两个重要的关键字,它们用于控制类成员方法的行为。在面向对象编程(OOP)中,理解这两个关键字的区别和用法,对于编写清晰、可维护和高效的代码至关重要。

查看原文

HTTP状态码

HTTP状态码为客户端提供了一种理解事务处理结果的边界方式。本文列出一些原因短语,所使用的是HTTP/1.1规范所定义的。

查看原文

Apple网页中滚动效果

打开Apple官网查看iPhone页面,我们可以看到一个特殊效果,当你滚动鼠标时,页面不出现滚动效果,但内容却在变化。现在,基于 position : sticky 可以很容易实现这个效果。

查看原文