6

我正在尝试将域帐户添加到远程计算机的管理员组。我遇到的问题是,当我尝试实际连接到远程计算机 PrincipleContext 时,它给了我一条拒绝访问消息,但我以远程计算机本地管理员的身份连接。当我尝试访问它时,虽然我得到"Access is denied"。我知道登录名是正确的,因为如果我更改它,我会得到一个错误的密码/用户名错误。

管理员帐户是真正的管理员帐户,我可以使用该帐户登录到本地框,并且我具有完全的管理员访问权限,我可以根据需要将用户添加到管理员组,而不会出现任何问题。有什么想法会导致它在尝试远程执行此操作时报告访问被拒绝?

try
      {
        using (PrincipalContext pc = new PrincipalContext(ContextType.Machine, "SERVER_IP_HERE", null, ContextOptions.Negotiate, @"RemoteMachineNameHere\Administrator", "MyPassword"))
        {
          //Get an access denied error here trying to connect to the Context
          GroupPrincipal group = GroupPrincipal.FindByIdentity(pc, "Administrators");
          PrincipalContext dom1PC = new PrincipalContext(ContextType.Domain, "FQDNOFDomainHere");
          var me = UserPrincipal.FindByIdentity(dom1PC, IdentityType.SamAccountName, @"MyUserName");
          group.Members.Add(me);
          group.Save();
        }
      }
      catch (System.DirectoryServices.DirectoryServicesCOMException E)
      {
        Console.WriteLine(e);

      } 
4

2 回答 2

0

我遇到了同样的问题,经过两天的搜索,终于找到了类似主题的解决方案。

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

在您的目标服务器上执行以上 cmd 然后重新启动,您将不再被拒绝访问!

于 2018-07-20T08:27:40.340 回答
-1

出色地!我有一台配置了域并安装了 AD 的服务器。我们将其命名为A。我需要从属于网络的其他 PC B连接到它(但是它没有加入域)

因此,对于这种情况,唯一的更改是在线完成 -

using (PrincipalContext pc = new PrincipalContext(ContextType.Machine, "SERVER_IP_HERE", null, ContextOptions.Negotiate, @"DomainNameOfRemoteMachineHere\Administrator", "MyPassword")

所以这里是代码 -

static void Main()
    {
        try
        {
            using (PrincipalContext pcRoot = new PrincipalContext(ContextType.Machine, "IP_Address", null, ContextOptions.Negotiate, @"domainNameHere\Administrator", "SomePass"))
            {
                //Get an access denied error here trying to connect to the Context
                var group = GroupPrincipal.FindByIdentity(pcRoot, "Administrators");
                var pc = new PrincipalContext(ContextType.Domain, "FQDNOFDomainHere");
                var user = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, "vssaini");

                if (group == null)
                {
                    Console.WriteLine("Group not found.");
                    return;
                }

                if (user == null)
                    Console.WriteLine("User not found.");
                else
                    group.Members.Add(user);

                group.Save();
            }
        }
        catch (Exception exc)
        {
            Console.WriteLine(exc);
        } 

        // Wait for output
        Console.ReadKey();
    }

在测试时它运行顺利。

于 2015-05-31T11:54:35.063 回答