.NET WPF应用程序如何添加至Windows启动项并传递参数?
.NET WPF程序添加Windows启动项并传递启动参数
要实现带参数的自动启动,核心是修改注册表启动项的值,将可执行文件路径与参数拼接在一起,注意如果路径包含空格,必须用双引号包裹路径,否则系统无法正确解析命令。
修改后的注册表写入代码
using Microsoft.Win32; using System.Windows; // 打开当前用户的启动项注册表分支(可写模式) RegistryKey runRegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); if (runRegistryKey != null) { // 拼接带参数的启动命令:路径加双引号,后跟参数"Start" string autoStartCommand = $"\"{Application.ExecutablePath}\" Start"; // 写入注册表,键名替换为你的应用名称(确保唯一) runRegistryKey.SetValue("MyWpfApplication", autoStartCommand); runRegistryKey.Close(); }
在程序中识别启动方式
在App.xaml.cs中重写OnStartup方法,读取命令行参数判断是否为自动启动:
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); // 检查命令行参数中是否包含"Start" bool isAutoLaunched = e.Args.Length > 0 && e.Args[0] == "Start"; if (isAutoLaunched) { // 自动启动时的业务逻辑 // 例如:最小化到托盘、跳过欢迎界面等 } else { // 用户手动启动时的逻辑 } }
注意事项
- 优先使用
Registry.CurrentUser下的启动项:无需管理员权限,不会触发UAC弹窗,仅对当前用户生效;若需所有用户登录都启动,可改用Registry.LocalMachine下的对应路径,但需要管理员权限。 - 注册表键名要唯一:避免与其他程序的启动项冲突,建议使用你的应用名称。
- 移除启动项:若需要取消自动启动,调用
runRegistryKey.DeleteValue("MyWpfApplication")即可。
内容的提问来源于stack exchange,提问作者Kaan Çağhan
相关产品推荐
相关产品推荐

