我想运行此功能,或至少使用不同的凭据从AD中删除计算机帐户的位:
public static void DeleteMachineAccount(String MachineName)
{
String MachineLdapPath = LdapPath(MachineName);
String OuLdapPath = MachineLdapPath.Replace("CN=" + MachineName + ",", "");
Console.WriteLine(MachineLdapPath);
Console.WriteLine(OuLdapPath);
if (DirectoryEntry.Exists(MachineLdapPath))
{
try
{
DirectoryEntry MachineOu = new DirectoryEntry(OuLdapPath);
DirectoryEntry MachineToDelete = new DirectoryEntry(MachineLdapPath);
MachineOu.Children.Remove(MachineToDelete);
MachineToDelete.CommitChanges();
}
catch (Exception e)
{
Console.WriteLine(e.Message.ToString());
}
}
}
(LdapPath函数只返回指定机器名的LDAP路径。)
我如何/在哪里指定一些不同的凭据以允许它运行?目前我被拒绝访问,因为我使用的帐户无权执行此操作。
谢谢,
本
答案 0 :(得分:1)
您可以使用提供身份验证的DirectoryEntry类的重载。这将导致您使用此特定用户的权限从DirectoryServices运行LDAP查询。需要注意的是,为了做到这一点,您需要传递凭据(需要由用户存储或输入),因此请小心处理它们。以纯文本格式存储它们可能会导致系统安全问题。
New DirectoryEntry(ldapRoot, _activeDirectoryUsername, _activeDirectoryPassword);
答案 1 :(得分:0)
您需要使用模拟。最简单的方法是实际“借用”任何调用此方法的人的权限。例如,如果从命名管道或WCF调用中调用此方法,则有内置方法可以模拟调用方并代表它们执行此操作。