|
前段時(shí)間寫(xiě)出一個(gè)程序,只是不完善,不能判斷是否存在該用戶,現(xiàn)在補(bǔ)充查找功能。 代碼不足之處,希不吝指教! 完整代碼如下:
<%@ Language=VBScriptcodepage="936"%> <% Option Explicit %> <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <META NAME="GENERATOR" Content="Microsoft Visual Studio 7.0"> </HEAD> <BODY> <% '程序目的:創(chuàng)建EXCHANGE 2000 郵箱用戶 '程序?qū)崿F(xiàn)方式:首先在AD(ACTIVE DIRECTORY:活動(dòng)目錄)中查找是否有該用 '戶,如果有則提示用戶該名字已經(jīng)存在,沒(méi)有則創(chuàng)建該用戶, '并為該用戶創(chuàng)建郵箱。 '程序設(shè)計(jì):skyword, skyword@21cn.com '程序日期:2001-06-27 '需要注意的問(wèn)題:程序使用中,應(yīng)當(dāng)關(guān)注LDAP的不同。并且程序的運(yùn)行需要比 '較主高的運(yùn)行權(quán)限(我使用是管理員權(quán)限,呵呵比較不安全, '大家在實(shí)際使用中要注意,不然被人竊取了帳號(hào)不要怪我。 '我也不太會(huì)設(shè)置),需要在IIS中設(shè)置(以前就是因?yàn)椴涣私?br>',走了不少?gòu)澛罚海?) '另外還有一種方案,查找用戶可結(jié)合數(shù)據(jù)庫(kù)查找,我想大家 '會(huì)更熟悉一些,只是要記得在初始數(shù)據(jù)時(shí),要把計(jì)算機(jī)內(nèi)所 '有的帳號(hào)都要記錄進(jìn)數(shù)據(jù)庫(kù),不然就不能準(zhǔn)備判斷是否該用 '戶,因?yàn)锳D只判斷是否有該用戶,而不管該在什么位置,這 '點(diǎn)大家要注意。 '程序是中用到一些知識(shí)點(diǎn)均加以注釋,希望對(duì)大家對(duì)所幫助 ' 另外需要注意的是帳號(hào)名字不能小于2位,而且不能使用中文 ' 名字.
Dim objUser Dim objContainer Dim objMailbox Dim objMail
Dim recipname, recip Dim ServerName, DomainName, emailname, FirstName, LastName, password
'判斷用戶是否存在 Dim strQuery, objConn, objRs, strResult '查詢語(yǔ)句:語(yǔ)法:要找什么,即查找基(<LDAP://DC=program,DC=org>); '在目錄的什么地方找(&(objectCategory=person)(sAMAccountName=用戶 '名))(用戶為?的用戶;找到對(duì)象的屬性(sAMAccount,ADsPath)(用戶名, 'LDAP地址);查找的范圍(subTree:查找搜索基以下的整個(gè)子樹(shù)中)。例句 '就是下面這句. '具體細(xì)節(jié)請(qǐng)參看《ASP3高級(jí)編程》P644,機(jī)械工業(yè)出版社(好象精華區(qū)內(nèi) '有這本書(shū)的電子文檔,這本本書(shū)真的不錯(cuò),值得購(gòu)買)
strQuery = "<LDAP://DC=program,DC=org>;(&(objectCategory=person)" & _ "(sAMAccountName=" & Request.Form ("txtUserName") & "));" & _ "sAMAccountName,ADsPath;subTree" '打開(kāi)ADSI Set objConn = Server.CreateObject ("ADODB.Connection") objConn.Provider = "ADsDSOObject" '下面這句是用合法用戶打開(kāi),不然查找的結(jié)果有誤,本例中使用管理員帳號(hào) objConn.Open "Active Directory Provider","CN=Administrator, CN=users, DC=program, DC=org","skyword" '查找用戶是否存在,不存在則創(chuàng)建用戶 Set objRs = Server.CreateObject ("ADODB.Recordset") objRs.Open strQuery, objConn
if not objRs.EOF then strResult = False Response.Write "用戶已經(jīng)存在" else '創(chuàng)建用戶 strResult = True End if
objRs.Close Set objRs = Nothing
objConn.Close Set objConn = Nothing
If strResult = True Then '創(chuàng)建用戶的代碼
'ServerName,DomainName是ADSI需要的LDAP信息,是必需的。 ServerName = "skyword.program.org" DomainName = "DC=program,DC=org"
emailname = Request.Form ("txtUserName") password = Request.Form ("txtPassword") recip = "CN=" & emailname '下面這語(yǔ)個(gè)IF語(yǔ)句沒(méi)多少價(jià)值。 :) if Request.Form ("txtTruename") <> "" then LastName = "sky" FirstName = "Word" else LastName = "Last" FirstName = "Name" end if
'打開(kāi)對(duì)象 Set objContainer = GetObject("LDAP://" & ServerName & "/OU=China.org," & DomainName)
'創(chuàng)建帳號(hào) Set objUser = objContainer.Create("User", recip) objUser.Put "samAccountName", emailname'帳號(hào) objUser.Put "sn", LastName objUser.Put "givenName", FirstName objUser.Put "DisplayName", emailname '& "@hina.org"'顯示的名字 objUser.Put "mail", emailname & "@China.org" objUser.Put "userPrincipalName", emailname & "@China.org"'用戶登錄帳號(hào) objUser.SetInfo'寫(xiě)進(jìn)AD中
objUser.SetPassword password'用戶密碼 objUser.AccountDisabled = False'帳號(hào)生效 objUser.SetInfo'寫(xiě)進(jìn)AD,一定要,為什么我也不清楚
'創(chuàng)建郵箱 Set objMailbox = objUser '下面的LDAP是查出來(lái)的,安裝不同,LDAP會(huì)有所不同。 objMailbox.CreateMailbox "LDAP://skyword.program.org/" & _ "CN=Mailbox Store (SKYWORD),CN=First Storage Group," & _ "CN=InformationStore,CN=SKYWORD,CN=Servers," & _ "CN=First Administrative Group,CN=Administrative Groups," & _ "CN=ecitye,CN=Microsoft Exchange,CN=Services," & _ "CN=Configuration,DC=program,DC=org" objUser.SetInfo
Set objContainer = Nothing Set objUser = Nothing Set objMailbox = Nothing '下面是簡(jiǎn)單的錯(cuò)誤處理。 if err <> 0 then Response.Write "創(chuàng)建用戶失!請(qǐng)重試一次<br>" Response.Write "<input type='button' value='重試一次' onclick='vbscript:history.back()'>" Response.Write "<input type='button' value='返回' onclick='vbscript:window.location.href=index.html'>" else '以下是簡(jiǎn)單的測(cè)試 Set objMail = Server.CreateObject ("CDONTS.NewMail") objMail.Send "Admins@china.org", emailname & "@china.org", "Welcome", "Welcome use China.org Mail" set objMail = Nothing
Response.Write emailname & "用戶已經(jīng)成功創(chuàng)建!!!!" & "<br>三秒后導(dǎo)向登錄頁(yè)!" Response.AddHeader "refresh","3;url=http://mail.china.org" end if End If %> </BODY> </HTML>
|