【发布时间】:2011-12-16 13:51:14
【问题描述】:
我正在使用 C# 创建新的计算机帐户。我的目标是允许 IT 帮助台人员在正确的 OU 中安全地将计算机添加到域中。我打算这样做的方式是让他们使用一种工具,该工具将获取相关信息并在 Active Directory 中创建帐户。到目前为止,这一切都很好。只有一个障碍——我不知道如何授予我的员工将计算机加入域的权利。通常在 Active Directory 中,您可以更改允许将新计算机加入域的组。我正在使用 DirectoryServices.AccountManagement,但我不知道如何在代码中做同样的事情。
这是我的代码:
PrincipalContext oPrincipalContext = GetPrincipalContext(sOU);
//The password is just a random construction.
//The computer SAM Account Name must end with a dollar sign in order for it
//to be usable.
ComputerPrincipal oComputerPrincipal = new ComputerPrincipal(oPrincipalContext,
sComputerName + "$",
RandomPassword(),
true);
//You actually need to save the record before it is actually created
oComputerPrincipal.Save();
这会创建计算机帐户并将它们放入正确的 OU。但是,您仍然需要被授予将计算机添加到域的权限,以便将计算机连接到此帐户。我找不到这样做的代码。
附带说明,我了解我可以授予我的帮助台人员将计算机加入域的权限。但是,问题是他们可以在不使用此工具的情况下这样做。他们不会意识到,当他们这样做时,他们会将计算机发送到错误的 OU。
更新
这是一张更新的图片,向您展示我试图在代码中完成的工作。如下图所示,当我在代码中创建新的计算机帐户时,我试图更改底部框(通过代码)。看看它如何让您指定谁可以将此特定计算机添加到域中?
【问题讨论】:
-
@marc_s - 计算机帐户创建本身(上述代码)是使用服务帐户完成的,而不是用户帐户。那不是问题。问题是当他们在机器上并在完成上述步骤后尝试将其加入域时 - 对象存在于 AD 中,但他们仍然无权将他们所在的计算机加入该对象.这是我要解决的问题。
标签: c# active-directory dns account-management