0

我正在通过这样的 Web 应用程序创建数据库用户:

        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 用户?

4

1 回答 1

0

这个问题将被标记为重复,但为了清楚起见,我只想分享我的具体情况:

感谢@SteveDrake,我在这里找到了答案。

我的实现:

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

                bool UserExists = (up != null);
            }

注意我将其更改ContextTypeDomain

于 2018-11-26T15:15:18.313 回答