Я хочу написать функцию в приложении службы Windows для удаления заданного имени компьютера из Active Directory.
Служба Windows работает на компьютере, который присоединен к домену DC. В настоящее время я вошел на эту машину с учетной записью администратора домена.
Служба Windows работает в контексте безопасности «NT AUTHORITY / SYSTEM», и это не должно изменяться, так как после установки приложения не должно быть никакого взаимодействия с пользователем, то есть администратор не должен вводить свои учетные данные в услуги.
Когда я запускаю приложение с добавленным кодом для удаления учетной записи компьютера, оно не работает. Однако, когда я изменяю информацию для входа в службу Windows и обновляю ее с помощью учетных данных администратора домена, она может успешно удалить учетную запись компьютера из AD.
Ниже [сокращенная версия] функции, используемой для удаления учетных записей компьютеров.
Можно ли как-нибудь изменить код, чтобы можно было удалять учетные записи компьютеров, используя тот же контекст безопасности (NT AUTHORITY / SYSTEM)?
private void DeleteComputerAccount(string CompName, DirectoryEntry DirEntry)
{
try
{
//Delete computer account
DirectorySearcher search = new DirectorySearcher(DirEntry, "(name=" + CompName + ")");
SearchResult res = search.FindOne();
res.GetDirectoryEntry().DeleteTree();
}
catch (Exception)
{
Throw();
}
}
Где DeleteComputerAccount
называется:
DirectoryEntry dirEntry = new DirectoryEntry("LDAP://domain.contoso.com");
string compName = "MyWorkstation01";
DeleteComputerAccount(compName, dirEntry);