C# 如何在代码中指定备用凭据?

C# 如何在代码中指定备用凭据?,c#,permissions,active-directory,C#,Permissions,Active Directory,我想运行此功能,或者至少运行从AD中删除具有不同凭据的计算机帐户的位: public static void DeleteMachineAccount(String MachineName) { String MachineLdapPath = LdapPath(MachineName); String OuLdapPath = MachineLdapPath.Replace("CN=" + MachineName + ",",

我想运行此功能,或者至少运行从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路径。)

如何/在何处指定一些不同的凭据以允许此操作运行?目前我的访问被拒绝,因为我使用的帐户将没有权限这样做

谢谢


Ben

您需要使用模拟。最简单的方法是实际“借用”调用此方法的人的权限。e、 例如,如果这是从命名管道或WCF调用调用的,则有内置的方法来模拟调用方并代表调用方执行此操作。

您需要使用模拟。最简单的方法是实际“借用”调用此方法的人的权限。e、 例如,如果这是从命名管道或WCF调用调用的,则有内置的方法来模拟调用方并代表调用方执行此操作。

您可以使用提供身份验证的DirectoryEntry类的重载。这将导致LDAP查询以该特定用户的权限从DirectoryServices运行。需要注意的是,要做到这一点,您需要传递凭据(需要用户存储或输入凭据),因此在处理凭据时要小心。以纯文本形式存储它们可能会导致系统安全问题

New DirectoryEntry(ldapRoot, _activeDirectoryUsername, _activeDirectoryPassword);

可以使用提供身份验证的DirectoryEntry类的重载。这将导致LDAP查询以该特定用户的权限从DirectoryServices运行。需要注意的是,要做到这一点,您需要传递凭据(需要用户存储或输入凭据),因此在处理凭据时要小心。以纯文本形式存储它们可能会导致系统安全问题

New DirectoryEntry(ldapRoot, _activeDirectoryUsername, _activeDirectoryPassword);