Я пытаюсь использовать c # для добавления пользователей в активный каталог. Я попытался использовать System.DirectoryServices
и System.DirectoryServices.AccountManagement
и добавил необходимые ссылки, но по какой-то причине он не распознает .CommitChanges()
, .Invoke()
или .Exists()
. Вот код, над которым я пытался работать. Точная ошибка, которую я получаю:
CS0012 Тип "Компонент" определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку 'Система, Версия = 4.0.0.0, Культура = нейтральная, PublicKeyToken = b77a5c561934e089'
Я добавил ссылку на System.DirectoryServices.dll, есть ли какая-либо другая ссылка? нужно добавить в систему?
Это .NET
using System;
using System.DirectoryServices;
namespace Test
{
class Class1
{
public struct UserInfo
{
public string userName;
public string sAMAccountName;
public string password;
public string firstName;
public string lastName;
public string fullName;
public string principalName;
public string ou;
public string description;
}
public static void Main()
{
string uFirstName = "John";
string uLastName = "Test";
string uUserName = uFirstName + "." + uLastName;
string uOu = "OU=,OU=,DC=,DC=";
string uSamAccount = uUserName;
string uPassword = "password";
UserInfo newUserInfo;
newUserInfo.firstName = uFirstName;
newUserInfo.lastName = uLastName;
newUserInfo.fullName = uFirstName + uLastName;
newUserInfo.userName = uUserName;
newUserInfo.principalName = uUserName + "@rc";
newUserInfo.ou = uOu;
newUserInfo.description = "STUDENT";
newUserInfo.sAMAccountName = uSamAccount;
newUserInfo.password = uPassword;
DirectoryEntry adUserFolder = new DirectoryEntry("LDAP://CN=, OU=, OU=, DC=, DC=");
DirectoryEntry newUser = adUserFolder.Children.Add("CN=" + newUserInfo.userName, "User");
// Checks for duplicate entries
if (DirectoryEntry.Exists(newUser.Path))
{
Console.WriteLine("The user: " + newUser.Username + " already exists, the new entry will be deleted.");
adUserFolder.Children.Remove(new DirectoryEntry(newUser.Path));
}
else
{
return;
}
newUser.Properties["sAMAccountName"].Value = newUserInfo.sAMAccountName;
newUser.Properties["givenName"].Value = newUserInfo.firstName;
newUser.Properties["surName"].Value = newUserInfo.lastName;
newUser.Properties["Path"].Value = newUserInfo.ou;
newUser.Properties["Description"].Value = newUserInfo.description;
newUser.Properties["Password"].Value = newUserInfo.password;
newUser.CommitChanges();
newUser.Invoke("setpassword", "password");
newUser.Properties["userAccountControl"].Value = 0x0200;
newUser.CommitChanges();
Console.WriteLine("User: " + newUserInfo.userName + " has been successfully created!");
}
}
}