Qraizer: Чтобы инсталлировать службу, нужны права админа. Если есть права админа, то сделать можно много что, но программно – только если заранее предусмотреть в программе такую возможность. Насколько я понял, у ТС такого не предусмотрено, значит юзеры используют какой-то другой механизм. В XP это делалось легко, но дальше уже весьма затруднительно. Наверняка где-то в безопасности системы дыра.
Это несложно на самом деле. Если ты уже с правами Системы, то простое WTSGetActiveConsoleSessionId() и WTSQueryUserToken() дадут токен пользователя текущего сеанса, на основе которого несложно перезапустить себя CreateProcessAsUser().