Только частичный ответ:
Я полагаю, System.Security.Principal.WindowsIdentity.GetCurrent();
вернет учетную запись пользователя Windows, связанную с текущим выполняющимся потоком.Если поток или приложение было запущено под другой учетной записью пользователя, не вошедшего в систему, вы не получите то, что используете после этого.
Если вы можете быть уверены, что вашПрикладная программа не была запущена с использованием функции «запуск от имени» (или программной эквивалентности), и вы ничего не делаете внутренне в отношении идентификации потока, вы можете быть уверены, что это вошедшая в систему учетная запись пользователя, но я не% по этому.
Может быть возможно найти учетную запись пользователя, связанную с "сеансом" вдов, в котором приложение выполняется с использованием ADSI (см. System.DirectoryServices).