我已经完成了一个应用程序,它基本上通过DirectoryEntry遍历网络上的所有活动用户,在那里我可以获得每台计算机的用户名(登录ID),这是由DE.UserName(DirectoryEntry)完成的。
好的,到目前为止一直很好,现在我的问题;每当我尝试获取它的密码时,它都会抛出一个异常,说我需要拥有管理员权限才能获得每个连接的PC的密码。
我不是网络的所有者,所以我想知道是否有任何方式可以作为管理员身份验证或将您的群组更改为管理员,或者以任何方式绕过这个以便我可以访问它的密码?
代码:
DirectoryEntry computers = new DirectoryEntry("WinNT://JBVAS");//The domain
IEnumerator enumerator = computers.Children.GetEnumerator();
while(enumerator.MoveNext())
{
DirectoryEntry entry = enumerator.Current as DirectoryEntry;
Console.WriteLine("Username: {0}{1}Password: {2}",
entry.Username, Environment.NewLine, entry.Password);
}
答案 0 :(得分:1)
您可以使用模拟使您的代码(临时)在更高权限的用户下运行。
几年前我写了一个易于使用的模拟课程,you can find it over at CodeProject.com。
一个例子可能是:
using ( new Impersonator( "myUsername", "myDomainname", "myPassword" ) )
{
// code that executes under the new context
}
将需要管理员权限的Active Directory代码放在使用块中。