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

使用正则表达式来判断邮箱

在开发中,很多地方都需要用户输入邮箱,用户注册,登录需要邮箱,订阅消息需要邮箱,为了防止被恶意使用,一般都会使用正则表达式来判断输入是否符合邮箱规范

查看原文

asp.net core实现一个反向代理

本文将向你展示如何在C#和ASP.NET Core中实现一个反向代理功能。

查看原文

如何查看系统端口占用

在web开发中,时常会遇到开发的应用无法启动,这种情况一般是由于当前监听端口已经被别的应用先行占用监听了。本文就 Windows 和 Linux 介绍一下查看端口占用程序。

查看原文

WPF中创建一个矩形圆角动画

WPF 中内置了好几种动画,大多数场景可以坐到开箱即用,不过并没有内置 CornerRadiusAnimation ,本文将会介绍怎么实现一个 CornerRadiusAnimation 动画,实现 BorderCornerRadius 属性动画效果。

查看原文

Nginx重定向HTTP到HTTPS

HTTP协议以纯文本形式进行数据的交互,数据明文传输,容易被监听,窃取和伪造,HTTPS在HTTP的基础上,使用了TLS/SSL对通信过程进行加密,数据得到了有效的保护,就算被拦截到也无法获取信息,更没法实施中间人攻击。本文将会介绍如何在Nginx中配置HTTP重定向到HTTPS。

查看原文