2011-01-14 169 views
1

我已经完成了一个基本上通过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); 
     } 

回答

1

你可以使用模拟提出更高的特权用户下运行的代码(临时)。

几年前,我写了一个易于使用的模拟类,you can find it over at CodeProject.com

一个例子可以是:

using (new Impersonator("myUsername", "myDomainname", "myPassword")) 
{ 
    // code that executes under the new context 
} 

将需要使用阻止内部管理员权限您的Active Directory的代码。

+0

这不就是给我这台计算机的管理权限,但不是网络?或者是我在找什么?我相信网络上有4-5个管理员帐户,他们都有用户名“adm- [他们的名字]”,而我们的普通用户只有我们的用户名。 – user576137 2011-01-14 20:37:39