代碼不足之處,希不吝指教!
完整代碼如下:
<%@ Language=VBScript codepage="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>
<%
'程序目的:創建EXCHANGE 2000 郵箱用戶
'程序實現方式:首先在AD(ACTIVE DIRECTORY:活動目錄)中查找是否有該用
' 戶,如果有則提示用戶該名字已經存在,沒有則創建該用戶,
' 并為該用戶創建郵箱。
'程序設計:skyword, [email protected]
'程序日期:2001-06-27
'需要注意的問題:程序使用中,應當關注LDAP的不同。并且程序的運行需要比
' 較主高的運行權限(我使用是管理員權限,呵呵比較不安全,
' 大家在實際使用中要注意,不然被人竊取了帳號不要怪我。
' 我也不太會設置),需要在IIS中設置(以前就是因為不了解
' ,走了不少彎路:) )
' 另外還有一種方案,查找用戶可結合數據庫查找,我想大家
' 會更熟悉一些,只是要記得在初始數據時,要把計算機內所
' 有的帳號都要記錄進數據庫,不然就不能準備判斷是否該用
' 戶,因為AD只判斷是否有該用戶,而不管該在什么位置,這
' 點大家要注意。
' 程序是中用到一些知識點均加以注釋,希望對大家對所幫助
' 另外需要注意的是帳號名字不能小于2位,而且不能使用中文
' 名字.
Dim objUser
Dim objContainer
Dim objMailbox
Dim objMail
Dim recipname, recip
Dim ServerName, DomainName, emailname, FirstName, LastName, password
'判斷用戶是否存在
Dim strQuery, objConn, objRs, strResult
'查詢語句:語法:要找什么,即查找基(<LDAP://DC=program,DC=org>);
'在目錄的什么地方找(&(objectCategory=person)(sAMAccountName=用戶
'名))(用戶為?的用戶;找到對象的屬性(sAMAccount,ADsPath)(用戶名,
'LDAP地址);查找的范圍(subTree:查找搜索基以下的整個子樹中)。例句
'就是下面這句.
'具體細節請參看《ASP3高級編程》P644,機械工業出版社(好象精華區內
'有這本書的電子文檔,這本本書真的不錯,值得購買)
strQuery = "<LDAP://DC=program,DC=org>;(&(objectCategory=person)" & _
"(sAMAccountName=" & Request.Form ("txtUserName") & "));" & _
"sAMAccountName,ADsPath;subTree"
'打開ADSI
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Provider = "ADsDSOObject"
'下面這句是用合法用戶打開,不然查找的結果有誤,本例中使用管理員帳號
objConn.Open "Active Directory Provider","CN=Administrator, CN=users, DC=program, DC=org","skyword"
'查找用戶是否存在,不存在則創建用戶
Set objRs = Server.CreateObject ("ADODB.Recordset")
objRs.Open strQuery, objConn
if not objRs.EOF then
strResult = False
Response.Write "用戶已經存在"
else
'創建用戶
strResult = True
End if
objRs.Close
Set objRs = Nothing
objConn.Close
Set objConn = Nothing
If strResult = True Then
'創建用戶的代碼
'ServerName,DomainName是ADSI需要的LDAP信息,是必需的。
ServerName = "skyword.program.org"
DomainName = "DC=program,DC=org"
emailname = Request.Form ("txtUserName")
password = Request.Form ("txtPassword")
recip = "CN=" & emailname
'下面這語個IF語句沒多少價值。 :)
if Request.Form ("txtTruename") <> "" then
LastName = "sky"
FirstName = "Word"
else
LastName = "Last"
FirstName = "Name"
end if
'打開對象
Set objContainer = GetObject("LDAP://" & ServerName & "/OU=China.org," & DomainName)
'創建帳號
Set objUser = objContainer.Create("User", recip)
objUser.Put "samAccountName", emailname '帳號
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" '用戶登錄帳號
objUser.SetInfo '寫進AD中
objUser.SetPassword password '用戶密碼
objUser.AccountDisabled = False '帳號生效
objUser.SetInfo '寫進AD,一定要,為什么我也不清楚
'創建郵箱
Set objMailbox = objUser
'下面的LDAP是查出來的,安裝不同,LDAP會有所不同。
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
'下面是簡單的錯誤處理。
if err <> 0 then
Response.Write "創建用戶失敗!請重試一次<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
'以下是簡單的測試
Set objMail = Server.CreateObject ("CDONTS.NewMail")
objMail.Send "[email protected]", emailname & "@china.org", "Welcome", "Welcome use China.org Mail"
set objMail = Nothing
Response.Write emailname & "用戶已經成功創建!!!!" & "<br>三秒后導向登錄頁!"
Response.AddHeader "refresh","3;url=http://mail.china.org"
end if
End If
%>
</BODY>
</HTML>