以下に書き込む 32 ビット アプリケーションがあります。
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
現在のユーザーがログオンしたときにアプリケーション パスが開始されるようにします。これは 32 ビット システムで正常に動作します (つまり、アプリケーションは自動起動します)。
64 ビット システムでは、レジストリ リダイレクトが機能することを理解しています。だから、私は検索しました:
HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
しかし、CurrentVersion サブキーは存在しません (ただし、Wow6432Node キーは存在します)。そのため、手動で作成し、アプリケーションがレジストリに正しく書き込みました (レジストリに移動して確認しました。エントリはそこにありました)。しかし、現在のユーザーがログインしたときにアプリケーションが自動起動しませんでした。理由を教えてもらえますか?
ところで、HKEY_LOCAL_MACHINE ブランチを使用すれば、これで問題ありません。しかし、私はこれをユーザー固有にしたいと考えています。
Startup フォルダーだけを使用しないのはなぜですか?
UAC が有効で、常に通知するように設定されている場合、これは単に機能しません (つまり、アプリケーションが自動起動しません)。いいえ、UAC を無効にすることはできません。私のアプリケーションは、UAC を有効にし、常に通知するように設定した状態で正常に動作する必要があります。
誰かが理由を教えてくれれば、レジストリを使用する必要性を喜んで忘れます (私はレジストリが嫌いです)。
フォールバック オプション (最後の手段):
これを行うには、タスク スケジューラ API を使用します。ただし、やむを得ない場合に限ります。
ありがとう!