【问题标题】:Start application with parameters on Windows start使用 Windows 启动参数启动应用程序
【发布时间】:2013-02-13 22:17:35
【问题描述】:

我正在尝试让我的应用程序在 Windows 启动时自动启动并运行登录逻辑。

我已经让它在启动文件夹中使用带有参数的快捷方式工作,但我想知道是否有某种方法可以设置可以启动我的程序并像快捷方式一样传递参数的注册表项?

我正在为安装程序使用 Inno Setup,并且我正在使用这一行:

Name: "{commonstartup}\AppNameHere"; Filename: "{app}\AppNameHere.exe"; \
    Parameters: "/login"`

但我希望能够使用这样的注册表项:

Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; \
    ValueType: string; ValueName: "AppNameHere"; ValueData: """{app}\AppNameHere.exe"""; \
    Flags: uninsdeletevalue`

我认为有一些方法可以为启动指定参数,但我在 Inno Setup 网站上找不到任何东西,除了我已经从http://www.jrsoftware.org/iskb.php?startwithwindows 中找到了关于添加注册表项本身的内容

有没有人有在 Windows 启动时添加注册表项和使用参数启动应用程序的经验?

【问题讨论】:

  • 只需将您的参数包含在 ValueData 中,用空格分隔 - 在属于路径的引号之后。
  • @Greg 你这么说是因为我标记了这个 C# 还是特定于 InnoSetup?上面的代码 sn-p 直接来自他们的知识库,所以我认为它应该可以正常工作..
  • @SertacAkyuz 我认为这会起作用Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "AppNameHere"; ValueData: """{app}\AppNameHere.exe"" /login"; Flags: uninsdeletevalue
  • 我说是因为你标记了 C#。当您调用 C# 程序集来操作注册表时,它可能很挑剔。是的,我相信这应该可行。
  • @Zack - 是的,我就是这么想的。

标签: windows registry inno-setup startup


【解决方案1】:

您可以在ValueData 中包含参数,彼此之间以及与可执行路径之间用空格分隔。例如:

[Registry]
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; \
    ValueType: string; ValueName: "AppNameHere"; \
    ValueData: """{app}\AppNameHere.exe"" /login"

【讨论】:

  • 这有效,需要在 [Registry] 部分内。当然,用户需要安装程序的管理员权限。
  • @auto - 谢谢。我认为声明的去向应该很明显,问题已经有了注册表项——这个答案只是改进了它。不批评您的评论,但编辑可能没有必要。毕竟,这个 Q/A 并不是一个教程。只是我的意见..
  • 我从谷歌搜索进来,不知道[Registry] 部分,所以对我来说并不明显。花了我额外的搜索才能找到它。我想其他从 InnoSetup 开始的人会处于同样的位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-11
  • 2019-03-07
  • 2011-12-04
相关资源
最近更新 更多