2

C#を使用してADODB経由でActiveDirectoryに接続する例を探しています。

私の目標は、ルックアップを実行して、そのユーザー属性(ユーザーID、電子メールアドレスなど)の1つに基づいて、ユーザーがActiveDirectoryで有効であることを確認できるようにすることです。

[ADODBの使用はこのための要件であり、DirectoryServicesの使用は有効な応答ではないことを強調したいと思います。]

私の現在のアプローチは機能していません(cmd.Executeビットでの例外):

object parms = null;
object recs = null;
ADODB.Connection conn = new ADODB.Connection();
ADODB.Command cmd = new ADODB.Command();
ADODB.Recordset rs = new ADODB.Recordset();

conn.Open("Provider=ADsDSOObject",obfsUser,obfsPass,0);

cmd.ActiveConnection = conn;
cmd.CommandText = "<LDAP://OU=obfsOU,DC=obfsDC,DC=corp,DC=Net>;;name;subtree";
rs = cmd.Execute(out recs, ref parms, 0);

サーバー参照を提供する必要があるかどうか/どこにあるのかわからないし、refによってcmd.Executeメソッドに渡されるパラメーターがどうあるべきか本当にわかりません。ADODBを介してC#からActiveDirectoryに接続するためのドキュメントはそれほど多くありません。

conn.Stateは1を返しているので、アクティブな接続を取得していると思います。問題は、cmd.Execute()メソッドに渡されるパラメーターにあると思います。

4

3 に答える 3

2

これは機能します。

これが、私が抱えていたのと同じニーズと問題を抱えている他の誰かに役立つことを願っています.

[ADODB.Command オブジェクトの欠如と、クエリに ADSI 形式ではなく SQL 形式を使用していることに注意してください。]

object recs;

ADODB.Connection conn = new ADODB.Connection();
ADODB.Recordset rs = new ADODB.Recordset();

// You may need to provide user id and password instead of empty strings        
conn.Open("Provider=ADsDSOObject", "", "", 0);

// replace <> elements with your server name and OU/DC tree org
string server = "<enter your server name here>";
string start = "OU=<blah>,DC=<blah>,DC=<blah>,DC=<blah>";
string where = "objectClass = '*'";
string qry = string.Format("SELECT cn FROM 'LDAP://{0}/{1}' WHERE {2}", server, start, where);

rs = conn.Execute(qry, out recs, 0);

for (; !rs.EOF; rs.MoveNext())
{
    Console.WriteLine(rs.Fields["cn"].Value.ToString());
}
于 2009-07-17T00:22:57.523 に答える
0

ActiveDirectoryでRichardMuellerのWebサイトをチェックしてください。彼は特にADのADO検索のヒントに関するページを持っています。

http://www.rlmueller.net/ADOSearchTips.htm

彼のWebサイトには、すべてのADプロパティとその特性を備えたExcelシートなど、多数の優れた参考資料もあります。

強くお勧めします!

マーク

于 2009-07-17T05:49:46.543 に答える