2011-01-14 35 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つの管理者アカウントがあると信じています。そこにはすべてユーザーID「adm- [氏名]」があり、私たちの正規ユーザーは私たちの名前をuseridとして持っています。 – user576137

+0

あなたが指定したユーザーの権利を与えます。ドメイン管理者の場合は、このコンテキストの下で実行します。 –

+0

私は上記のコードを追加しました。私はあなたの使用する機能の下に置くと、私はネットワーク管理者として認可され、パスワードも取得できると信じていますか? ありがとうございます。 – user576137

関連する問題