Как создать учетную запись GMSA через C#

#c# #gmsa

#c# #gmsa

Вопрос:

Я попытался найти пример кода на c #, чтобы увидеть, как создается учетная запись службы рекламы, но безуспешно. Кто-нибудь может предоставить пример кода для создания учетной записи службы рекламы, пожалуйста?

Я пробовал UserPrincipal с $ в конце имени, но без особой удачи. Ошибки с отказом в доступе (не удается создать под root MyDomain или под CN)

 // Domain Context to use specific LDAP path.
domainContext = new PrincipalContext(ContextType.Domain, domainContext.ConnectedServer, "CN=Managed Service Accounts,dc=mydomain");
UserPrincipal userAccount = new UserPrincipal(domainContext)
{
  DisplayName = userName,
  SamAccountName = $"{userName}$",
  Description = description
};
userAccount.Save();
  

Комментарии:

1. Что происходит, когда вы запускаете приведенный выше код? Что-нибудь происходит? Есть ли какая-либо ошибка?

2. Когда я пытаюсь запустить приведенный выше код, выдает ошибку «Доступ запрещен». В основном потому, что я не могу создать учетную запись в разделе «mydomain» напрямую или под CN, который настроен для MSAS.

3. Похоже, проблема с авторизацией

4. Можете ли вы создать учетную запись с помощью powershell? learn.microsoft.com/en-us/previous-versions/windows/it-pro /…

5. Я могу создавать учетные записи без каких-либо проблем в powershell, используя new-adserviceaccount, который сопоставляет учетную запись с учетными записями CN = Managed Service. Однако я хотел найти собственный способ создания учетной записи на c # вместо вызова powershell.

Ответ №1:

Немного поздно, но я думаю, что смогу ответить на этот вопрос. Вам нужно использовать функцию NetAddServiceAccount через logoncli.dll . Я не смог заставить ее работать в PowerShell, даже добавив, как я думал, подходящую прокладку типа, но я только что наткнулся на модуль, который, кажется, работает.

https://github.com/beatcracker/Powershell-Misc/blob/master/Use-ServiceAccount.ps1

В коде C # для определения типа в этом скрипте должно быть все, что вам нужно для самостоятельной реализации.

Комментарии:

1. Где можно найти logoncli.dll ? После того, как вы нашли, как вы предлагаете ее использовать в C #?

2. Там же, где вы найдете большинство других системных библиотек. Попробуйте system32. Вероятно, вам нужно научиться использовать вызовы win32 API в c #. Если вам нужно спросить…