Вообще, можно поступить вот так:
https://gist.github.com/alexkuznetsov/b4880005d73c...
Это регистрация windows-службы из самого приложения. Но, нужно запускать от администратора.
Т.е., отвечая прямо на ваш вопрос:
- Ваше приложение должно быть windows службой
- Оно должно содержать в себе установщик (там есть такой компонент)
А затем, можно его установить через
ManagedInstallerClass.InstallHelper(new string[] { "absolute\path\to\assembly.exe" });
UPD:
yellowmew указал общий способ, мой относится только к windows-службам, написанным на .NET