DirectoryServices создает код пользователя в Active Directory и на локальной машине - почему? - PullRequest
0 голосов
/ 04 октября 2018

Мы должны создать учетные записи пользователей в активном каталоге, чтобы аутентифицировать устройства для подключения к нашей беспроводной сети.Мой код приложения windows for vb.net в определенной степени автоматизирует этот процесс, но, похоже, у него есть непредвиденные последствия:

  • Он создает учетную запись в Active Directory с указанными атрибутами и устанавливает временный пароль
  • Добавляет учетную запись в требуемую группу AD и устанавливает указанную группу в качестве основной группы
  • Удаляет учетную запись из пользователей домена, поскольку это не требуется
  • Изменяет пароль наMAC-адрес устройства
  • Также создается локальный профиль в C: \ Users (и соответствующая запись реестра) на ПК, с которого запускается приложение.Почему?!

Естественно, это означает, что со временем C: \ Users заполняется нежелательными локальными профилями.Почему он это делает и как я могу это остановить?Поиск ответов кажется неубедительным.

Вот код для справки:

'Connect to AD and create base user account
Dim dirEntry As DirectoryServices.DirectoryEntry = New DirectoryServices.DirectoryEntry("LDAP://OU=RequiredOU,DC=Company")
Dim newUser As DirectoryServices.DirectoryEntry = dirEntry.Children.Add("CN=" + DeviceName.Text, "user")
newUser.CommitChanges()

'Set temp password and attributes
newUser.Invoke("setPassword", "temporarypassword")
newUser.Properties("sAMAccountName").Value = DeviceName.Text
newUser.Properties("givenName").Add(DeviceName.Text)
newUser.Properties("displayName").Add(DeviceName.Text)
'Store password using reversible encryption and prevent password expiry
newUser.Properties("userAccountControl").Value = 66176
newUser.Properties("userPrincipalName").Add(DeviceName.Text + "@company.co.uk")
newUser.CommitChanges()

'Connect to different OU in AD, locate group and add member
Dim grpEntry1 As DirectoryServices.DirectoryEntry = New DirectoryServices.DirectoryEntry("LDAP://OU=GroupOU,DC=Company")
Dim group1 As DirectoryServices.DirectoryEntry = grpEntry1.Children.Find("Wireless Auth Group")
group1.Properties("member").Add("CN=" + DeviceName.Text + ",OU=RequiredOU,DC=Company")
group1.CommitChanges()

'Now wireless auth group added, set it as primary group
newUser.Properties("primaryGroupID").Value = 12622
newUser.CommitChanges()

'Connect to 3rd OU, locate Domain Users and remove user from group
Dim grpEntry2 As DirectoryServices.DirectoryEntry = New DirectoryServices.DirectoryEntry("LDAP://CN=Users,DC=Company")
Dim group2 As DirectoryServices.DirectoryEntry = grpEntry2.Children.Find("CN=Domain Users")
group2.Properties("member").Remove("CN=" + DeviceName.Text + ",OU=RequiredOU,DC=Company")
group2.CommitChanges()

'Reset account password to device MAC address
newUser.Invoke("changePassword", "temporarypassword", DeviceMAC.Text)
newUser.CommitChanges()

'Close connections to AD
dirEntry.Dispose()
grpEntry1.Dispose()
grpEntry2.Dispose()
...