Winform开机自启动

Winform程序开机自启动

思路:将启动路径写入注册表
方法:在程序启动时执行如下方法,在下次重启时则会自动启动

        private void SetAutoStart()
        {
            try
            {
                string regPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";               
                string path = Application.ExecutablePath.ToLower();
                string name = Path.GetFileName(path);
                var regKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regPath, true);
                if (regKey == null) regKey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(regPath);
                regKey.SetValue(name, path);
            }
            catch { }           
        }

填坑:写注册表需要系统管理员权限,若发现以上方法未成功实现,则需进行如下操作:
1、在程序中添加程序清单文件:新建项->应用程序清单文件

在这里插入图片描述

2、打开刚刚新建的清单文件,按照下图修改UAC选项
在这里插入图片描述
修改完成,现在试试看行不行。

继续填坑:如果修改完成生成可执行文件时发生报错{ClickOnce 不支持请求执行级别requireAdministrator },那么请跟着我操作:

在【解决方案资源管理器】中右键你的项目—>打开“属性”—>左边选择“安全性”—>把【启用ClickOnce安全设置】的勾子去掉。
在这里插入图片描述
OK~!

### C# WinForms 应用程序开机自启动配置 #### 使用 Windows 启动文件夹方法 对于希望简单实现的应用,可将快捷方式放置于用户的启动文件夹内。该路径通常位于 `C:\Users\<用户名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup`[^1]。 ```csharp string startupPath = Environment.GetFolderPath(Environment.SpecialFolder.Startup); System.IO.File.Copy(Application.ExecutablePath, Path.Combine(startupPath, "MyApp.lnk"), true); ``` 此代码片段会复制当前应用程序至指定的启动目录中作为链接文件,确保每次登录时自动运行。 #### 注册表键值法 另一种更为灵活的方式涉及修改系统注册表,在特定位置添加条目使软件随操作系统一同加载: - **HKEY_LOCAL_MACHINE** 或者 **HKEY_CURRENT_USER** 下面找到 `SOFTWARE\Microsoft\Windows\CurrentVersion\Run` 路径; - 创建字符串类型的子项并赋予合适的名称与指向目标exe的实际地址; 以下是具体操作示范: ```csharp using Microsoft.Win32; // 打开或创建注册表项 RegistryKey key = Registry.CurrentUser.OpenSubKey( @"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true); if (key != null) { string appPath = Application.ExecutablePath; key.SetValue("YourAppName", appPath); // 设置启动项 } else { Console.WriteLine("无法访问注册表"); } key?.Close(); ``` 这段脚本通过编程手段实现了上述过程自动化处理,并且利用了 `CurrentUser` 来代替可能存在的权限问题下的 `LocalMachine` ,从而提高了兼容性和安全性[^2][^3]。 #### 结合 NotifyIcon 组件最小化到托盘功能 为了提供更好的用户体验,还可以考虑让应用在后台静默工作的同时仅保留一个小图标在屏幕底部的任务栏区域。这可以通过集成 `NotifyIcon` 控件轻松达成目的[^4]: ```xml <Window x:Class="WpfApplication.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <!-- ...其他控件... --> <NotifyIcon Icon="app.ico"/> </Window> ``` 以上介绍了几种常见的技术方案用于构建具备开机即启特性的桌面级解决方案。每种都有各自的特点和适用场景,请依据实际需求做出合理选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值