You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 12:50:21