我正在为我的应用程序开发一个setup.exe,将其复制到启动文件夹,路径如下:
cd %PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\Startup
现在我担心这个路径是否会在不同版本的 Windows 中发生变化。有人知道启动文件夹路径是否始终相同吗?有没有更好的方法来配置应用程序以在每次启动时启动?
任何建议都会很有帮助,
谢谢
答案1
Windows 中的启动优先级如下,从最先启动到最后启动的顺序为:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Runonce
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
SystemDrive\Documents and Settings\All Users\Start Menu\Programs\Startup
SystemDrive\Documents and Settings\username\Start Menu\Programs\Startup
最后两项与 Windows XP 时代有关。 %PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\Startup
是的,回答您的问题,Windows Vista、7、8 和 10 使用相同的启动文件夹。
因此,如果您希望程序先运行,请始终使用:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
否则,启动文件夹将在其他所有内容加载完成后加载。
答案2
您想要从 shell 命名空间中查找文件夹,例如通过传递FOLDERID_Startup
(或FOLDERID_CommonStartup
)从中查找文件夹的功能shell 命名空间。
另一个答案中提到的注册表项(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 等)是更好的选择。请参阅这里
微软还拥有描述不同方法的相对顺序的文章。
(启动文件夹的优点是用户容易控制)