作者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
推 arzbar:我記得當初我寫的時候 WEB USER 的權限要開很大... 08/12 04:34
→ arzbar:找找MSDN 吧 去取AD資料的文獻 真的很少 08/12 04:34