首页 > 编程语言 >Winform中设置程序开机自启动(修改注册表和配置自启动快捷方式)

Winform中设置程序开机自启动(修改注册表和配置自启动快捷方式)

时间:2024-01-23 10:11:07浏览次数:25  
标签:name 管理员 注册表 自启动 快捷方式 regKey

场景

winform程序需要在启动时自启动,可通过将exe快捷方式添加到自启动目录下,或者通过修改注册表添加启动项的方式。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

使用添加快捷方式到启动目录的方式

Windows下怎样使用bat设置Redis和Nginx开机自启动:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108314671

参考以上流程,将.exe创建快捷方式,并将快捷方式移动或复制到如下目录

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

使用修改注册表的方式

通过将启动路径添加到注册表的方式,在程序启动时执行写入注册表的操作,在下次重启时则会自动启动。

但是操作注册表需要管理员权限,所以即使是自动启动后,仍然手动点击确定,赋予管理员权限。

所以根据自己需要,如果仅仅是考虑只让其启动,不用自动执行相关操作等后续,可采用此种,或者考虑从其他层面去掉自启动后

手动确认赋予管理员权限的操作。

否则采用上面的方式。

新建操作注册表的工具类:

using Microsoft.Win32;
using System;
using System.Windows.Forms;

namespace WinformStudyDemo.com.badao.utils
{
    class AutoStartHelper
    {

        public static void OpenAutoStartUp()
        {
            // 要设置软件名称,有唯一性要求,最好起特别一些
            string name = "badaodechengxvyuan";
            Console.WriteLine("设置开机自启动,需要修改注册表");
            string currentPath = Application.ExecutablePath.ToLower();
            try
            {
                string regPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
                var regKey = Registry.LocalMachine.OpenSubKey(regPath, true);
                if (regKey == null)
                {
                    var regKey2 = Registry.LocalMachine.CreateSubKey(regPath);
                    regKey2.SetValue(name, currentPath);
                    regKey2.Close();
                }
                else
                {
                    string old_path = (string)regKey.GetValue(name);
                    if (old_path == null || !old_path.Equals(currentPath))
                    {
                        if (regKey.GetValue(name) != null)
                        {
                            regKey.DeleteValue(name);
                        }
                        regKey.SetValue(name, currentPath);
                    }
                }
                regKey.Close();
            }
            catch (Exception exception)
            {
                Console.WriteLine("开机自启动设置失败");
                Console.WriteLine(exception.Message);
            }
        }
    }
}

工具类方法逻辑说明:

获取注册表对应项的所有子项,如果为空,则新建名称为自定义的名称,值为当前路径的子项。

否则存在的话则尝试获取自定义名称的项,如果为空则新建,不为空且与当前值不一致则删除并新建。

修改Program.cs

        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //设置开机自启动
            com.badao.utils.AutoStartHelper.OpenAutoStartUp();
            Application.Run(new Form1());
        }

此时直接执行则不生效,需要申请管理员权限。

右击项目-新建项-常规-应用程序清单文件

 

修改如下代码赋予管理员权限申请

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

修改位置

 

则使用VS本地运行时则会提示

需要使用管理员启动VS

 

用管理员启动VS即可

运行成功之后,则会在注册表中编辑-查找中搜索到

 

在启动时就会进行管理员运行提示

 

标签:name,管理员,注册表,自启动,快捷方式,regKey
From: https://www.cnblogs.com/badaoliumangqizhi/p/17981738

相关文章

  • 注册表文件的数据信息保存 改进
    注册表是Windows操作系统中的重要组成部分,它用于存储系统和应用程序的配置信息。在Windows9x/Me版本中,注册表文件的数据信息保存在system.dat和user.dat这两个文件中。system.dat:system.dat是存储系统级别的注册表信息的文件。它包含了操作系统、硬件和驱动程序等方面的配置......
  • 自定义vcpkg注册表(一)
    vcpkg提供自定义注册表的功能,主要用途可以是:公司私有库的注册表,自己对官方port的补充但是目前还不想提交到官方的port以及自己和官方对同一个库有不同的构建意见。在自定义注册表中新建port尽管我经常说vcpkg的本质是git和cmake的组合使用,但其实vcpkg还提供了vcpkg.exe和一整套......
  • centos 开机自启动设置
    #进入/etc/init.d/cd/etc/init.d/#创建启动脚本touchstart.sh#编写启动脚本前三行为必填vim start.sh#!/bin/bash#chkconfig:-8515#description:开机自启脚本<F2>/usr/local/nginx/sbin/nginx-c/usr/local/nginx/conf/nginx.conf#开启自动方式一:/usr/lib/sy......
  • Windows用注册表修改键盘映射(扫描码)
    title:Windows用注册表修改键盘映射(扫描码)date:2020-10-18categories:编程tags:-键盘-注册表-Windows前言使用C/C++代码方式修改可见下篇《用C/C++(Win32API)写软件修改键位》据说Qwerty键盘是为了降低打字员打字速度,防止打字机卡机所作出的妥协。那么现在的键盘是......
  • Ajax注册表单用户名实时验证
    Ajax注册表单用户名实时验证 1.1.1摘要很多时候在网站上注册时,我们会发现,注册表单通常需要检查用户名和电子邮件地址的可用性;从而确保用户之间不拥有相同的用户名和电子邮件地址;一些网站喜欢在用户提交填写的用户信息时,做信息可用性的检查,而一些网站会做实时的用户名和电子......
  • 工作三年,还不会Linux配置开机自启动jar包吗
    Linux配置开机自启动jar包方式1:使用systemd服务要在Linux上配置开机自启动Jar包,可以按照以下步骤进行操作:创建一个启动脚本首先,创建一个启动脚本,用于启动你的Jar包。在终端中使用编辑器(如vi或nano)打开一个新文本文件,并添加以下内容:#!/bin/bashjava-jar/path/to/your/......
  • # Cockpit开机自启动小结
    之前使用cockpit作开机自启动是手动修改/usr/lib/systemd/system/cockpit.service文件,其实是不规范的操作,配置自启动应该执行如下命令:$sudosystemctlenablecockpit.socketCreatesymlink/etc/systemd/system/socket.target.wants/cockpit.socket->/usr/lib/systemd/syste......
  • 注册表修改后立即生效的命令
    首先,要让修改后的注册表生效通常有三种方法:1、刷新。也就是说修改注册表后可以立即生效(一些修改是可以的)。2、重起explorer进程。这也是通常替代重启的最简单的方法(适用绝大多数)。3、重启。有一些修改是必须要重启计算机的,没有什么其他捷径可言(适用全部)。所以可以看出来,第二......
  • 两个小妙招,给win to go添加PE,Windows去除快捷方式小箭头
    两个小妙招,给wintogo添加PE,Windows去除快捷方式小箭头。一个超级简单的给wintogo添加PE的方法。我的wintogo是UEFI+MBR,VHDX(此方法同样适合于传统模式)第一步,找到一个把维护工具集成在wim里的pe,这里我用的是口碑很好的微PE,在微PE官网下载的。下载之后启动生成ISO然后解压生成的ISO......
  • Ubuntu22.04上使用systemctl命令配置开机自启动服务、脚本、命令
    systemctl介绍systemctl是Linux系统上用于管理系统服务(systemd单元)的命令行工具。它可以用来启动、停止、重启、禁用、启用、查询和管理系统服务的状态。以下是一些常用的systemctl命令:systemctlstartservicename:启动一个服务。systemctlstopservicename:停止一个服务。s......