我想就以下问题寻求您的帮助。我正在开发临时应用程序,仅由我使用一次。其中一部分是为 AD 中的 3000 多个用户执行密码重置并向他们发送新凭据。我可以以普通用户的身份从 AD 读取,但我必须使用特权帐户来修改它。我怎样才能做到这一点?我知道,我可以使用 PowerShell 并在几秒钟内完成它,但我想学习如何在 C# 中完成它。我搜索用户的代码很简单public class ADSecurity{ public static string getUserName(string sam) { PrincipalContext ctx = new PrincipalContext(ContextType.Domain); UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, sam); return user.Name; }}我怎么能做同样的事情,但作为不同的用户?我看过一些指南,但都没有解释 az ... 只是关于如何模仿的建议,但没有关于如何使用它的建议。这里有一篇关于模拟的文章,但使用的是 LDAP 协议 ( DirectoryEntry)。但据我了解,它真的很慢。任何建议表示赞赏。我需要从现在开始 2 天后运行它,所以在最坏的情况下,我使用 PowerShell 来完成它。
1 回答
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
有几种方法可以做到:
在所需凭据下运行您的应用程序(Shift+右键单击 .exe 文件并使用“以其他用户身份运行”)。如果你只做一次,这是最简单的。
使用接受用户名和密码的PrincipalContext构造函数。
public class ADSecurity
{
public static string getUserName(string sam)
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, null, username, password);
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, sam);
return user.Name;
}
}
使用接受用户名和密码的DirectoryEntry构造函数。
我不确定你说的哪个例子“慢”,但根据我的经验,DirectoryEntry只要你正确使用它,直接使用几乎总是更快。无论如何,System.DirectoryServices.AccountManagement命名空间(您在示例中使用的)DirectoryEntry在幕后使用。
当然,选项 2 和 3 要求您知道密码。
- 1 回答
- 0 关注
- 115 浏览
添加回答
举报
0/150
提交
取消