如何使用C#代码从Windows Active Directory获取当前用户的登录名?
答案 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?
// ...
}
// ...
}