Как прокомментировали другие пользователи, подобные вещи должны идти в установщик.В проекте установки, который вы можете создать с помощью Visual Studio, вы можете добавить ссылку на папку автозагрузки пользователя, которая должна помочь.
НО
Если вы не хотите, чтобы пользователь вмешивался в папку автозагрузки, и вы абсолютно хотели, чтобы программа запускалась автоматически с Windows, вы можете сделать так, как выЯ сказал: проверяйте адекватный ключ реестра каждый раз, когда запускается программа, и, если его там нет, пишите.Примите во внимание, что для этого вашей программе потребуются повышенные права учетной записи.
НО
Вам это АБСОЛЮТНО нужно?Вы абсолютно уверены, что не можете предложить его в качестве опции для конечного пользователя?Если бы я был пользователем вашей программы, не хотел ее запускать, приложил все усилия, чтобы удалить ключ реестра, чтобы вытащить его оттуда, а затем узнать, что он снова в реестре без моего согласия, я бы очень разозлился...