Я не уверен, что понимаю вопрос. Позвольте мне попробовать:
Служба, о которой вы говорите, это ваша? Если это так, вы можете добавить к нему код для имитации Windows: в вашем сервисе проверьте значение RunOnce и запустите исполняемый файл, который он указывает. Вы можете использовать API CreateProcessAsUser (), чтобы запустить его в контексте произвольного пользователя. После запуска процесса удалите запись RunOnce.
Или я неправильно понял ваш вопрос?
РЕДАКТИРОВАТЬ: служба не зависит от пользователя, вошедшего в систему. Вы можете запустить процесс обновления из службы, как только сама служба запустится, это произойдет до того, как какой-либо реальный пользователь войдет в компьютер.