【发布时间】:2009-10-12 22:34:06
【问题描述】:
如何强制安装已添加安装项目的 Windows 应用程序,以便每次有人登录 Windows 时启动它?
编辑:我知道注册表设置,但具体来说,我正在寻找一种允许安装程序设置注册表值的解决方案。
【问题讨论】:
标签: c# windows installation startup
如何强制安装已添加安装项目的 Windows 应用程序,以便每次有人登录 Windows 时启动它?
编辑:我知道注册表设置,但具体来说,我正在寻找一种允许安装程序设置注册表值的解决方案。
【问题讨论】:
标签: c# windows installation startup
打开您的注册表并找到密钥
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run].
对于您要启动的每个程序,使用描述性名称自动创建一个新的字符串值,并将该字符串的值设置为程序可执行文件。
例如,要自动启动记事本,添加一个新条目
"Notepad"="c:\windows\notepad.exe".
删除启动应用程序
如果您尝试删除某个程序但在 StartUp 文件夹中找不到它(通常是 C:\WINDOWS\Start Menu\Programs\StartUp),那么它可能是从下面的注册表项之一启动的。要删除它,请删除与您要删除的程序关联的值。
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows]
【讨论】:
如果您确实需要在 Windows 启动时而不是在有人登录时启动您的应用程序,您需要将其创建为服务并在安装时将服务设置为“自动”。
网络上有很多地方可以为您提供相关信息:
是我找到的前三个,但做一些研究并找到适合你的资源。
更新
我从更新的问题中看到,要求程序在有人登录时运行,所以这个答案(在一定程度上)是多余的。但是,我将把它留在这里,以防有人想要进入服务根目录。
【讨论】:
您可以在启动文件夹中为您的 winforms 程序添加快捷方式。安装项目的文件系统是您需要查看的地方。
【讨论】:
从技术上讲,当“windows 启动”时,您无法启动 WinForms 应用程序;但是,您可以在有人登录 Windows 时启动它。要执行此操作,请执行以下三个操作之一:
更新:正如 Chris 指出的那样,我错过了 HKCU 的道路。
【讨论】:
要在每次 Windows 启动时运行,您应该将程序构建为 Windows 服务(或者可能从服务中启动)。
【讨论】: