Obtenir le nom d'utilisateur lors de l'emprunt d'identité

Je suis en utilisant la méthode suivante pour usurper l'identité d'un utilisateur dans mon code:

Comment voulez-vous faire d'emprunt d'identité .NET?

Dans une autre classe, j'ai besoin de savoir le courant de l'utilisateur (comme "mydomain\moose"), mais je n'ai aucune idée de si je suis en train d'usurper l'identité d'un autre utilisateur ou pas.

Comment puis-je obtenir le nom d'utilisateur, si je suis d'usurper l'identité de quelqu'un?

Système.De l'environnement.Nom d'utilisateur et le Système.De sécurité.Principal.WindowsIdentity.GetCurrent().Nom fois de retour à l'utilisateur d'origine, pas le actuellement avec emprunt d'identité de l'utilisateur.

Plus De Détails:

Je suis en train de faire cette usurpation d'identité afin que je puisse accéder à certains fichiers dans un netowrk part de l'utilisateur n'a généralement pas accès.

Si j'utilise un type de connexion de LOGON32_LOGON_INTERACTIVE, je ne vois que le nouvel utilisateur, mais je ne peut pas accéder au partage réseau. Si j'utilise un type de connexion de LOGON32_LOGON_NEW_CREDENTIALS (d'une valeur de 9), je peux accéder au partage réseau, mais je ne vois pas le nouvel utilisateur dans l'Environnement.Nom d'utilisateur.

Il devrait être de retour à l'identité de l'utilisateur. Êtes-vous absolument sûr que vous êtes représenté dans l'appel de la méthode que vous regardez en haut de l'utilisateur actuel.?
Je viens de tester à l'aide de l'identité de l'utilisateur pour accéder à un répertoire de mon utilisateur connecté n'a pas accès. Je peux accéder à l'annuaire, mais les deux méthodes de toujours retourner à l'utilisateur d'origine. une fois que j'ai arrêter l'usurpation d'identité, je reçois accès refusé essayez d'accéder à l'annuaire, donc je sais que c'est usurper l'identité correctement.
Ajouté plus de détails. Semble être le type d'ouverture de session à l'origine du problème.
Voir msdn.microsoft.com/en-us/library/windows/desktop/.... Vous pouvez essayer de LOGON32_LOGON_BATCH. Pour NEW_CREDENTIALS cela ne fonctionne pas car "La nouvelle ouverture de session a le même identifiant local, mais utilise les informations d'identification différentes pour d'autres connexions réseau."

OriginalL'auteur Moose | 2011-09-30