Полное имя, а не доменный идентификатор в Пользователе. Идентификационные данные. Имя

Глобально установленные модули помещаются в «/ usr / local / lib / node_modules» (или его эквивалент в вашей системе, который вы можете найти, выполнив «npm list -g»).

Что касается двоичных файлов, которые установлены глобально, символические ссылки на них размещаются в «/ usr / local / bin», но вы можете узнать, где они находятся в вашей системе, используя «npm bin -g». [111 ]

Например, browserify установлен в «/ usr / local / lib / node_modules / browserify» и имеет файл «/bin/cmd.js», который связан как: «/ usr / local / bin / browserify-> /usr/local/lib/node_modules/browserify/bin/cmd.js".

18
задан SteveC 26 November 2015 в 12:51
поделиться

5 ответов

Если Вы будете думать Active Directory, то необходимо будет найти UserPrincipal, который соответствует данному samAccountName, и получите свойство DisplayName от него. Обратите внимание, что это не может быть установлено.

string fullName = null;
using (PrincipalContext context = new PrincipalContext( ContextType.Domain ))
{
    using (UserPrincipal user
            = UserPrincipal.FindByIdentity( context,
                                            User.Identity.Name ))
    {
        if (user != null)
        {
            fullName = user.DisplayName;
        }
    }
}
17
ответ дан 30 November 2019 в 08:38
поделиться

Интерфейс IIdentity - это, которое обеспечивает свойство Name на Пользователе. Идентификационные данные. Интерфейс IIdentity может быть реализован на любом количестве классов, которые знают как пользователям поиска от хранилища данных (SQL Server, Active Directory, и т.д.).

нет никакого свойства интерфейса IIdentity, который предоставляет "John Doe". Если та информация будет расположена в Вашем хранилище данных затем, то необходимо будет использовать инструменты, характерные для того хранилища данных для доступа к нему.

Тем не менее его совершенно возможное, что объект, который возвращается Пользователем. Идентификационные данные имеют свойство, которое содержит "John Doe", к которому Вы смогли получать доступ через некоторый другой интерфейс помимо IIdentity (наша пользовательская реализация IIdentity делает это, например).

1
ответ дан 30 November 2019 в 08:38
поделиться
using System.DirectoryServices;


public static string GetFullName(string strLogin)
    {
        string str = "";
        string strDomain;
        string strName;

        // Parse the string to check if domain name is present.
        int idx = strLogin.IndexOf('\\');
        if (idx == -1)
        {
            idx = strLogin.IndexOf('@');
        }

        if (idx != -1)
        {
            strDomain = strLogin.Substring(0, idx);
            strName = strLogin.Substring(idx + 1);
        }
        else
        {
            strDomain = Environment.MachineName;
            strName = strLogin;
        }

        DirectoryEntry obDirEntry = null;
        try
        {
            obDirEntry = new DirectoryEntry("WinNT://" + strDomain + "/" + strName);
            System.DirectoryServices.PropertyCollection coll = obDirEntry.Properties;
            object obVal = coll["FullName"].Value;
            str = obVal.ToString();
        }
        catch (Exception ex)
        {
            str = ex.Message;
        }
        return str;
    }

и Вы может просто звонить

var strJonDoeName = GetFullName(User.Identity.Name)

, код дразнит его от здесь

1
ответ дан 30 November 2019 в 08:38
поделиться

Походит вместо имени для входа в систему, Вы после отображаемого имени учетной записи Пользователя Active Directory. То, что Вы могли бы хотеть сделать, должно сделать AD поиск (DirectorySearcher) и получить отображаемое имя от свойства результата поиска.

я предполагаю, что Вы находитесь в AD среде, так как Вы отметили вопрос adsi.

Примечание: , Если Вы работаете с.NET 3.5, Вы могли бы хотеть посмотреть на сообщение tvanfosson.

4
ответ дан 30 November 2019 в 08:38
поделиться

Может быть, я где-то допустил ошибку, но Winnt: // ... ... не работал на доменных аккаунтов для меня. Кроме того, если пользователь не в том же домене, что и машина, чем в AnvobalContext, может не найти нужный элемент (как он ищет в текущем контексте, если используется, как указано выше).

Следующее должно перевести «дружественное доменное имя», как указано пользователем. NiveDity.name к совместимую LDAP. Использование дистанционного управления доменом, обеспечивает необходимый путь к пути LDAP (которая решила мою поперечную проблему домена):

(VB.NET, sorry)
Imports System.DirectoryServices
Imports System.DirectoryServices.AccountManagement
Imports System.DirectoryServices.ActiveDirectory
...

Dim strUserName As String
Dim objDirContext As DirectoryContext
Dim objContext As PrincipalContext
Dim objPrincipal As Principal
Dim strLDAPDomainPath As String
...

// User.Identity.Name delivers domain\account or account@domain
// Split User.Identity.Name in domain and account as specified above
strDomain = "my_domain"
strAccount = "jdoe"

// Get LDAP domain relative path (distinguishName) from short domain name (e.g. my_domain -> us.my_domain.com -> DC=us,DC=my_domain,DC=com)
Try
    objDirContext = New DirectoryContext(DirectoryContextType.Domain, strDomain)
    strLDAPDomainPath = Domain.GetDomain(objDirContext).GetDirectoryEntry.Properties("distinguishedName").Value.ToString
Catch objException As DirectoryServicesCOMException
    Throw New Exception("Couldn't get LDAP domain: " & objException.Message)
End Try

// Find user in LDAP
// Nothing results in using current domain controller
Try
   objContext = New PrincipalContext(ContextType.Domain, Nothing, strLDAPDomainPath)
   objPrincipal = Principal.FindByIdentity(objContext, IdentityType.Name, strAccount)

   If Not IsNothing(objPrincipal) Then
      strUserName = objPrincipal.DisplayName
   End If
Catch objException As Exception
   Throw New Exception("Couldn't get user display name: " & objException.Message)
End Try

// strUserName should now contain the wanted full name
1
ответ дан 30 November 2019 в 08:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: