用ASP代码创建EXCHANGE2000用户

创建

前段时间写出一个程序,只是不完善,不能判断是否存在该用户,现在补充查找功能。
代码不足之处,希不吝指教!
完整代码如下:

<%@ 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, skyword@21cn.com
'程序日期: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='重试一次' > "
Response.Write "<input type='button' value='返回' >"
else
'以下是简单的测试
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 & "用户已经成功创建!!!!" & "<br>三秒后导向登录页!"
Response.AddHeader "refresh","3;url=http://mail.china.org"
end if
End If
%>
</BODY>
</HTML>

时间: 2025-01-20 11:57:01

用ASP代码创建EXCHANGE2000用户的相关文章

用ASP.ENT创建带事件的用户控件

下面说下怎么创建带事件的用户控件:   标准的WEB空间有事件,来进行交互,同样用户控件也有.   要创建一个带事件的用户控件很简单,只需要三步:   1.定义个公开的(public) 的事件委托,如ClickEventHandler   2.在用户控件类中定义引发事件的方法,如OnClick方法   3.在引发事件的方法中判断事件是否为空,如果不为空,就可以写事件出来代码了.   下面我们来一步一步实现,   1.创建一个用户控件文件--LinkClick.ascx.   2.从工具箱中拖入L

怎么在用asp代码来创建Access数据库

  尽管我们可以通过设计器来创建数据库, 但是我们也可以在asp的代码中创建数据库,这里我们就一起来看一下如何在asp中创建数据库. 在ASP中创建数据库,我们需要用到ADOX(Microsoft ADO Extensions for DDL and Security), 这个ADO的扩展可以帮助我们创建和修改数据库结构信息, 也包括数据库对象的安全策略. 它随着ADO 2.1 出现, 所以它能够在大多数的Windows平台上工作. 您可以到MS的官方网站去获取最新的ADO版本,当然,里边包括了

ASP.NET 创建带事件的用户控件

ASP.NET 用户控件的创建与使用----在这篇中讲了用户控件的创建与使用. 下面说下怎么创建带事件的用户控件: 标准的WEB空间有事件,来进行交互,同样用户控件也有. 要创建一个带事件的用户控件很简单,只需要三步: 1.定义个公开的(public) 的事件委托,如ClickEventHandler 2.在用户控件类中定义引发事件的方法,如OnClick方法 3.在引发事件的方法中判断事件是否为空,如果不为空,就可以写事件出来代码了. 下面我们来一步一步实现, 1.创建一个用户控件文件--Li

解决ASP.NET创建的线程的用户改变引发的拒绝访问错误

asp.net|创建|错误|访问|解决 解决ASP.NET创建的线程的用户改变引发的"拒绝访问"错误                ASP.NET创建的线程的用户由<identity impersonate="true"/> 改为NT AUTHORITY\NETWORK SERVICE, 引起"System.UnauthorizedAccessException","拒绝访问"     Dim thr As Thr

添加超级用户的.asp代码[蓝屏的原创,凯文改进,Ms未公布的漏洞]_应用技巧

添加超级用户的.asp代码[蓝屏的原创,凯文改进,Ms未公布的漏洞] 作者:蓝屏,凯文 文章来源:冰点极限其实上个礼拜我和凯文就在我的肉鸡上测试了,还有河马史诗.结果是在user权限下成功添加Administrators组的用户了(虽然我不敢相信我的眼睛). 上次凯文不发话,我不敢发布啊....现在在他的blog 上看到他发布了,就转来了咯(比我上次测试时还改进了一点,加了个表单).这下大家有福咯``` 反正代码是对的,但是很少能成功,具体的看运气了..呵呵,下一步我想把他整合到海洋里面去.嘿嘿

[API] 用ASP创建MDaemon用户

////////////////////////////////////////////////////////////////////////////// // [MDaemon] 用ASP创建MDaemon用户// 原创作者: 贾俊 (Jaron) // 网址: http://www.jiangdu.net ;// 邮件: jaron@jdinfo.net // 首次发表于江都资讯网,2003-01-12////////////////////////////////////////////

在ASP应用中验证用户身份

    交互式的Web应用比那些只提供静态Web页面的站点要求考虑更多的安全问题.注册与密码是保护敏感信息最为常用的手段.由于ASP没有直接提供验证用户身份的方法,因此,用户必须执行登录过程以便应用系统保存和提取用户相关信息.    一.示例站点概貌    本文通过一个示例站点ASPSecurity说明ASP应用中注册与密码保护的一般实现过程.我们把用户信息保存在Web服务器上的一个Access97数据库中,DSN名称为   ASPSecurity.唯一的数据库表拥有以下字段:Signon(文本

Access与Sql Server之ASP代码比较

access|server|sql|比较 后台数据库: [Microsoft Access] 与 [Microsoft Sql Server] 更换之后,ASP代码应注意要修改的一些地方: [一]连接问题(举例) [Microsoft Access] constr = "DBQ=c:\data\clwz.mdb; DRIVER={Microsoft Access Driver (*.mdb)}" [Microsoft Sql Server] constr = "DRIVER=

用VB生成DLL封装ASP代码一个例子:连接access数据库等

access|封装|数据|数据库 封装为dll会带来很多的好处,主要包括只是产权的保护,以及效率和安全性能的提升.这个例子中被封装的dll文件可以隐藏access数据库的实际路径. VB生成的DLL封装ASP代码来连接数据库(Access). 本文用一个最简单的连接access数据库的例子来说明如何将asp代码封装为dll文件. 我们用vb,最常见的方式来封装asp代码. 我们需要封装的对象如下: 'Proconn.aspdim ProConnset ProConn=Server.CreateO