Windows启动时使用参数启动应用程序

6

我正在尝试让我的应用程序在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启动时添加注册表键并带参数启动应用程序有经验吗?


3
只需将参数包含在ValueData中,用空格分隔 - 在属于路径的引号之后。 - Sertac Akyuz
@Greg,你是因为我标记了C#才这么说的吗?还是只针对InnoSetup?上面的代码片段直接来自他们的知识库,所以我认为它应该可以正常工作。 - Zack
1
@SertacAkyuz 我认为这段代码可以运行: Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "AppNameHere"; ValueData: """{app}\AppNameHere.exe"" /login"; Flags: uninsdeletevalue - Zack
我这么说是因为你标记了C#。当你调用C#程序集来操作注册表时,它可能会有些棘手。是的,我相信那应该可以工作。 - Greg
1
@Zack - 是的,这就是我想的。 - Sertac Akyuz
我使用regedit添加了注册表键并且它可以正常工作,因此我认为这个问题得到了解决。如果你想要给我创建一个答案以供标记,我会进行标记的。 - Zack
1个回答

7
您可以在ValueData中包含参数,每个参数与可执行路径之间以及彼此之间用空格分隔。例如:
[Registry]
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; \
    ValueType: string; ValueName: "AppNameHere"; \
    ValueData: """{app}\AppNameHere.exe"" /login"

1
这个可以工作,需要放在一个[Registry]部分内。当然,用户需要安装程序的管理员权限。 - autonomy
@auto - 谢谢。我认为语句应该放在哪里是显而易见的,问题已经有注册表键了——这个答案只是改进了它。不是批评你的评论,但这次编辑可能并不必要。毕竟,这个问题与答案不是教程。这只是我的观点... - Sertac Akyuz
1
我通过谷歌搜索进入,不知道[Registry]部分,所以对我来说不是很明显。我又进行了一次额外的搜索才找到。我想其他刚开始使用InnoSetup的人也会处于同样的位置。 - autonomy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接