Что Вы могли сделать в этом случае, должны создать сервис окон, работающий с полномочиями LocalSystem, и общаться с ним со своим поставщиком учетных данных.
Когда пользователь вводит его учетные данные в ICredentialsProvider, связался бы с сервисом окон, и сервис обработает аутентификацию.
После успешной аутентификации сервис должен проверить тот такой аккаунт, локально присутствует в системе, иначе создают новую локальную учетную запись с NetUserAdd и входят в систему с той учетной записью в систему.
Примите во внимание, что ICredentialsProvider не имеет полномочий создать локальную учетную запись или использовать большую часть Сети* функции, вот почему я предлагаю создать сервис окон с LocalSystem privs.
Мое предложение: не создавайте свои собственные, а используйте существующие инструменты. Если сообщения короткие, просто используйте системный журнал, чтобы передать их на центральный сервер. Постарайтесь структурировать сообщения для облегчения анализа: используйте JSON, если возможно, в противном случае используйте нотацию ключ = значение (например, Postfix).
Для анализа см. Graylog2 и Logstash + Kibana .
Эта бакалаврская диссертация дает довольно хороший обзор текущих протоколов регистрации и программного обеспечения (хотя и описывает старую версию Graylog2).