使用C#代码从Active Directory获取当前登录名

时间:2012-06-04 07:14:25

标签: c#

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

5 个答案:

答案 0 :(得分:48)

简单地说,

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

OR

string Name = System.Environment.UserName  

OR

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

OR

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

有效:)

答案 1 :(得分:28)

如果您使用的是.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中的用户和群组一起玩!

参考文献:

答案 2 :(得分:2)

System.DirectoryServices.AccountManagement.UserPrincipal.Current.Name

这对我也有用!感谢

答案 3 :(得分:0)

我获得了“ NT AUTHORITY \ NETWORK SERVICE”以及其他提供的解决方案,但 System.Threading.Thread.CurrentPrincipal.Identity.Name.ToString() 为我工作。

答案 4 :(得分:0)

我认为这很适合我!

for(int idx = 0; idx < 5; idx++) { // ^^^^^^^ It should stop before the null-terminator // (...) int tmp_chr = a[idx]-'0'; // Are you sure that there are only '0' or '1'? if( !(temp->key[1]) ) { // ^^^ 1 is wrong, here, it should be temp->key[tmp_chr] temp->key[a[idx]-'0'] = new Node(); // ^^^^^^^^^^ Why not use tmp_chr here and in the following? // ... } // ... }