gpt4 book ai didi

.net - .net 2.0 中的 System.DirectoryServices.AccountManagement

转载 作者:行者123 更新时间:2023-12-05 00:08:56 25 4
gpt4 key购买 nike

有没有:

string name = System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName;



.net 2.0 框架中的等效性?
它使用 System.DirectoryServices.AccountManagement (ver 3.5) 引用。我尝试在 .net 2.0 框架上使用该文件,但无济于事。

基本上,我想检索 Windows 用户的完整用户名(名字和姓氏)(不是 Request.ServerVariables["REMOTE_USER"] 只提供 Windows 用户名)

最佳答案

S.DS.AM 命名空间是在 .NET 3.5 中引入的,不幸的是,它没有 2.0 版本。

您可以使用 WindowsIdentity.GetCurrent().Name 查询 ASP.NET 应用程序中的当前 Windows 用户 - 这为您提供了 DOMAIN\UserName。

然后,您必须使用 DirectorySearcher 对象在 AD 中对该用户进行用户搜索,以便找到相应的 DirectoryEntry。这将为您提供该用户的所有点点滴滴。

    string currentUser = WindowsIdentity.GetCurrent().Name;

string[] domainUserName = currentUser.Split('\\');
string justUserName = domainUserName[1];

DirectoryEntry searchRoot = new DirectoryEntry("LDAP://dc=(yourcompany),dc=com");

DirectorySearcher ds = new DirectorySearcher(searchRoot);

ds.SearchScope = SearchScope.Subtree;

ds.PropertiesToLoad.Add("sn");
ds.PropertiesToLoad.Add("givenName");

ds.Filter = string.Format("(&(objectCategory=person)(samAccountName={0}))", justUserName);

SearchResult sr = ds.FindOne();

if (sr != null)
{
string firstName = sr.Properties["givenName"][0].ToString();
string lastName = sr.Properties["sn"][0].ToString();
}

它有点复杂并且涉及 .NET 2.0 - 无法改变这一点:-(

马克

关于.net - .net 2.0 中的 System.DirectoryServices.AccountManagement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/924893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com