Thread.CurrentPrincipal.Identity.Name está vazio do WPF

EDITAR

A pergunta simples é, como posso obter Thread.CurrentPrincipal.Identity.Name para ter o logon do usuário atual no WPF?

END EDIT

Eu estou tentando chamar um método existente (não em qualquer tipo de serviço; apenas um método em um POCO) que recupera o usuário atual com:

Thread.CurrentPrincipal.Identity.Name

Este código foi escrito por outra pessoa e (presumivelmente) funciona com seu projeto ASP.NET MVC. Eu estou tentando chamar esse mesmo método do WPF e nome agora está em branco.

Existe alguma coisa que eu possa fazer sobre isso?

Defina Thread.CurrentPrincipal como new WindowsPrincipal(WindowsIdentity.GetCurrent()) . Em seguida, você terá o princípio atual da vida útil desse segmento de maneira confiável. Você terá que repetir isso em qualquer outro tópico que você criar.

EDIT: eu também deve mencionar os methods SetThreadPrincipal e SetPrincipalPolicy no AppDomain. Isso deve ser feito na boot do aplicativo e novos threads criados agora verão esse principal por padrão. Se esse método não for chamado, todos os novos segmentos começarão novamente com GenericPrincipal.

Experimentar

 System.Security.Principal.WindowsIdentity.GetCurrent().Name; 

ou:

 Environment.UserName 

Isso também funcionou para mim:

 Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());