30

如何使用 C# 代码从 Windows Active Directory 获取当前用户的登录名?

4

5 回答 5

58

简单地,

string Name = new System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent()).Identity.Name;

或者

string Name = System.Environment.UserName  

或者

string Name = Environment.GetEnvironmentVariable("USERNAME");

或者

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

作品:)

于 2012-06-04T07:16:09.227 回答
32

如果您使用的是 .NET 3.5 及更高版本,则可以使用:

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find current user
UserPrincipal user = UserPrincipal.Current;

if(user != null)
{
   string loginName = user.SamAccountName; // or whatever you mean by "login name"
}    

新的 S.DS.AM 使得在 AD 中与用户和组一起玩变得非常容易!

参考:

于 2012-06-04T07:17:10.797 回答
3
System.DirectoryServices.AccountManagement.UserPrincipal.Current.Name

这也为我工作!谢谢

于 2015-10-01T05:43:04.240 回答
2

我正在使用提供的其他解决方案获得“NT AUTHORITY\NETWORK SERVICE”,但 System.Threading.Thread.CurrentPrincipal.Identity.Name.ToString() 对我有用。

于 2018-11-21T08:53:04.407 回答
0

我认为这对我来说非常适合!

<h5 class="mb-0 text-gray-800">Welcome, <span style="text-transform:capitalize">@User.Identity.Name.Replace("AD-GROUP-NAME\\", "").Replace(".", " ")</span></h5>

于 2019-11-13T15:27:16.433 回答