Как уже говорилось в других ответах, проверка текущего имени пользователя очень ненадежна. Сервисы потенциально могут быть настроены на использование любой учетной записи, даже включая учетную запись реального пользователя.
В прошлом я исследовал вопрос, похожий на этот: может ли исполняемый файл определить, запускается ли он как служба или как обычная программа? Казалось, что вывод был сделан, что нет официального способа сказать. Единственный достаточно надежный способ, который я обнаружил, заключался в проверке успеха или сбоя одной из функций, которые сервисная программа должна вызывать при запуске. Очевидно, что эта техника непригодна для использования dll сервисом.
Так что, насколько мне известно, у dll нет хорошего способа определить это самостоятельно. Либо нужна программа хостинга, чтобы рассказать длл. Или же вам нужно пересмотреть свой дизайн. Почему DLL на самом деле нужно это знать? И есть ли альтернативные способы заставить его работать так, чтобы об этом не нужно было знать?