.net 2.0 中的 System.DirectoryServices.AccountManagement

发布于 2024-07-22 14:33:22 字数 366 浏览 7 评论 0原文

有没有:

字符串名称 = System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName;

.net 2.0框架中的等价物? 它使用 System.DirectoryServices.AccountManagement(版本 3.5)引用。 我尝试在 .net 2.0 框架上使用该文件,但没有成功。

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

Is there a:

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

equivalence in .net 2.0 framework?
It uses the System.DirectoryServices.AccountManagement (ver 3.5) reference. I tried using that file on a .net 2.0 framework but to no avail.

Basically, I want to retrieve the full username (first name and last name) of the windows user (not Request.ServerVariables["REMOTE_USER"] which only gives windows username)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

讽刺将军 2024-07-29 14:33:22

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 - 无法改变这一点:-(

Marc

The S.DS.AM namespace was introduced in .NET 3.5, and unfortunately, there's no 2.0 version of it.

You can query the current Windows user in an ASP.NET app using WindowsIdentity.GetCurrent().Name - this gives you DOMAIN\UserName.

Then you'd have to do a user search in AD for that user with a DirectorySearcher object in order to find the corresponding DirectoryEntry. This will give you all the bits and pieces of that user.

    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();
    }

It's a bit complicated and involved in .NET 2.0 - can't change that :-(

Marc

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文