作者jimshih (传说中的果汁学长)
看板Web_Design
标题[问题] Asp 如何连至AD抓资料? (OS.: 2003Server)
时间Fri Aug 11 18:08:07 2006
原本的系统是架在 Windows 2000 Server + SQL 2000 下的
现在要把系统移植到 Windows 2003 Server + SQL 2005下..
第一个碰到的难题就是 AD 抓不到 :(
在win2000下是可以正常的跑, 可是拿到win2003就不行了
我写的测试程式如下:
<%
Dim sUserID, sPassword, Root,
Dim DomainPath, schema, config,domain1,sSearchRoot,sADPath
Dim ADSI_conn, ADSI_Command, ADSI_rs
sUserID = "administrator"
sPassword = "u6bj6"
set Root=getobject("LDAP://RootDSE")
DomainPath=Root.Get("DefaultNamingContext")
sSearchRoot = "LDAP://" & DomainPath
'建立ADO相关之ADSI物件
'
set ADSI_conn = createobject("ADODB.connection")
set ADSI_Command = createobject("ADODB.command")
set ADSI_rs = createobject("ADODB.Recordset")
'
' 设定 AD 连结参数并执行查询
'
ADSI_conn.Provider = "AdsDsoObject"
ADSI_conn.Properties("User ID") = sUserID
ADSI_conn.Properties("Password") = sPassword
ADSI_conn.Properties("Encrypt Password") = False
ADSI_conn.Open sSearchRoot
Set ADSI_Command.ActiveConnection = ADSI_conn
ADSI_Command.CommandText = "select AdsPath from '" & sSearchRoot & _
"' where objectClass='user' and objectCategory='person' and " & _
" objectCategory='user'"
Set ADSI_rs = ADSI_Command.Execute
Do Until ADSI_rs.EOF
sADPath = ADSI_rs.Fields("AdsPath").Value
Response.Write "sAdPath = " & sADPath & "<br>"
ADSI_rs.MoveNext
Loop
ADSI_rs.close
set Root = Nothing
set Domain1 = Nothing
set ADSI_rs = Nothing
set ADSI_Command = Nothing
set ADSI_conn = Nothing
%>
这支程式可以在 win2000下正常的跑,
但在 win2003下就跑不出来, 出现如下错误讯息
Provider 错误 '80040e09'
使用权限遭拒
发生错误的程式行在: Set ADSI_rs = ADSI_Command.Execute 这一行上..
请问是不是Provider 的问题呀? 是要先安装什麽才能跑 AdsDosObject 这个元件吗?
如果是的话, 请问要去哪抓呢?
大感谢~~~
(公司居然把这个5年前写的系统要我这个才来4年的人管, 真是没天理啊~~)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.229.61.172
1F:推 arzbar:我记得当初我写的时候 WEB USER 的权限要开很大... 08/12 04:34
2F:→ arzbar:找找MSDN 吧 去取AD资料的文献 真的很少 08/12 04:34