Вот тривиальное консольное приложение, которое я запускаю в командной строке:
using System;
using System.Threading;
namespace Test
{
internal class Runner
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine(Thread.CurrentPrincipal.GetType().Name);
Console.WriteLine(Thread.CurrentPrincipal.Identity.Name);
}
}
}
Выходные данные - «GenericPrincipal» и пустая строка в качестве имени пользователя. Почему конструкции времени выполнения GenericPrincipal
вместо WindowsPrincipal
? Как заставить его создать WindowsPrincipal
из токена безопасности запускающего процесса (в моем случае cmd.exe)?