我正在用 C++ 开发一个具有“自动启动”选项的应用程序。当用户设置该选项时,程序应更改Windows 中的某些内容,以便在下次 Windows 启动和用户登录时由 Windows 启动。此外,当用户取消设置此选项时,程序必须将内容放回原处。
我不需要将应用程序作为服务运行,因此在用户登录后在某些用户帐户下运行就足够了。那么让Windows运行我的应用程序的最佳方法是什么。在下次启动和用户登录时?我搜索了一个使用启动文件夹的建议。这是最好的和无害的方式吗?
如果是这样,我有两个问题:
- 如何检测启动文件夹。我对SHGetSpecialFolderLocation()的输出不满意。它似乎在测试 WinXP 平台时返回了我的“HOME”目录(C:\Documents and settings\%username%)。
- 如何在那里使用 C++ 创建 .lnk 文件?我认为复制整个 .exe 文件是个坏主意。
实际上我的程序是跨平台的,但是“自动启动”选项将是仅限 Windows 的。
更新
尝试 SHGetSpecialFolderLocation 并在 Windows7 中获得了不错的价值:“C:\Users\Pavel\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup” 注意:如果使用 MinGW,则应在包含 ShlObj 之前将 _WIN32_IE 定义为 0x0400 。H。
使用注册表(HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run)和启动文件夹之间的最佳解决方案(从良好编程的角度来看)是什么?