Подводя итог сказанному Ричардом (и добавив мой собственный комментарий):
Вы не можете напрямую установить глобальный хук клавиатуры из службы Windows, начиная с Windows Vista. Однако все равно было бы логичным выбором использовать службу Windows, поскольку у вас будут все необходимые привилегии для установки глобальных хуков. Вы можете дублировать свои привилегии для дочерних процессов, которые вы создаете в каждом сеансе пользователя, вошедшего в систему, чтобы позволить вашим дочерним процессам устанавливать глобальные хуки в своем собственном рабочем столе / сеансе, даже если пользователь не обладает соответствующими привилегиями.
Лично (если вы пишете кейлоггер) вместо того, чтобы объединять все зарегистрированные нажатия клавиш в один процесс и записывать их на диск, может иметь смысл, чтобы каждый отдельный процесс записывал отдельные файлы в соответствии со своим именем пользователя.