「autostart」オプションを持つ C++ でアプリケーションを開発しています。ユーザーがそのオプションを設定すると、次回の Windows ブートおよびユーザー ログオン時に Windows によって開始されるように、プログラムは Windows 内の何かを変更する必要があります。また、ユーザーがこのオプションの設定を解除した場合、プログラムは元に戻す必要があります。
アプリをサービスとして実行する必要はないので、ユーザーのログオン後に特定のユーザーのアカウントで実行するだけで十分です。それで、Windowsにアプリを実行させる最良の方法は何ですか. 次回の起動時およびユーザー ログオン時に? スタートアップフォルダーを使用するためのアドバイスをグーグルで検索しました。それは最も素晴らしく無害な方法ですか?
もしそうなら、私は2つの質問があります:
- スタートアップ フォルダを検出する方法。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" .h.
レジストリ (HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run) とスタートアップ フォルダーを使用する間の最善の解決策 (良いプログラミングの観点から) は何ですか?