代码之家  ›  专栏  ›  技术社区  ›  ThunD3eR

如何检查windows NT用户是否有效[[副本]

  •  0
  • ThunD3eR  · 技术社区  · 7 年前

    我通过web应用程序创建db用户,如下所示:

            try
            {
                SetConnection(server);
                string sql =
                    "USE [master]" +
                    " CREATE LOGIN" + " [TP1\\" + user + "] FROM WINDOWS WITH DEFAULT_DATABASE=[master], " +
                    "DEFAULT_LANGUAGE=[us_english] " +
                    "EXEC sys.sp_addsrvrolemember @loginame = N'TP1\\" + user + "', @rolename = N'sysadmin'";
    
    
                _tableContext.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction, sql);
    
            }
            catch (Exception e)
            {
                // log error
                throw e;
            }
    

    我正在测试应用程序,输入了WINDOWS-NT中不存在的名称,并出现以下错误:

    找不到Windows NT用户或组“TP1\MyName”。核对一下名字 再次说明。\r\n'TP1\MyName'不是有效的登录名,或者您没有 权限。\r\n已将数据库上下文更改为“master”

    经过一段时间的研究,我发现我可以 SELECT * FROM sysusers

    我想知道是否有办法让我检查一下 如果用户名是有效的NT用户?

    1 回复  |  直到 7 年前
        1
  •  0
  •   ThunD3eR    7 年前

    此问题将被标记为重复问题,但为了清楚起见,我只想分享我的具体场景:

    here 感谢@SteveDrake。

    我的实施:

            using (PrincipalContext pc = new PrincipalContext(ContextType.Domain))
                {
                    user = "MyName";
                    UserPrincipal up = UserPrincipal.FindByIdentity(
                        pc,
                        IdentityType.SamAccountName,
                        user);
    
                    bool UserExists = (up != null);
                }
    

    ContextType Domain