摘 要 利用
vb完成一个组件,
注册到NT SERVER的MTS中。在
asp中使用了DLL中所包含的组件,完成浏览器对NT 域用户口令的修改。
关 键 词 ASP,ADSI,MTS,WEB 服 务 器,浏 览 器
近几年来,
计算机网络技术得到迅猛发展。Windows NT网络操作系统以其可管理性、可用性和丰富的应用软件赢得了越来越多的用户。虽然NT的用户管理非常容易,也有其局限性。例如UNIX下利用Telnet远程修改用户口令非常简单,但是NT就没有这么容易。我们利用NT建立了代理服务器、邮件服务器,管理用户口令自然也遇到了这个
问题。
本文中我们要创建的是一个在浏览器里管理NT域用户的
程序,解决了这个难题。
1、 应用实现的环境:
服务器:
Windows NT Server 4.0
IIS 4.0 (Internet Information Server,包含在NT Option Pack 4.0内)
MTS 2.0 (Microsoft Transaction Server,包含在NT Option Pack 4.0内)
ADSI 2.5 (Active Directory Services Interfaces ,到微软站点
下载)
ASP (IIS4.0本身就支持,不需单独安装)
应用创建工具:
VB 6.0 (用来创建ActiveX DLL 服务器组件)
HTML 编辑器 (用来创建ASP 表单)
客户:
Windows 98
IE4.0
2、 利用创建ActiveX DLL 组件。
(1)起动VB ,创建一个新的ActiveX DLL project。
(2)将缺省名Project1 改名为 aciChangePassword。
(3)将class 模块 Class1 改名为 Main。
(4)将Main的instancing 属性值改为 5 – MultiUse。
(5)将Threading 模式改为Apartment Threaded。
(6)Project->reference菜单,将Microsoft Active DS Type Library (activeds.tlb)与Microsoft Transaction Server Type Library (mtxas.dll)选中。如果没有这两个文件,可以到其它
计算机上去拷贝一个。
(7)将Project保存。Class命名为“main.cls”,Project命名为“aciChangePassword.vbp”。
(8)下面的代码放到General declarations 里面。
Option Explicit
'' 定义 MTS对象上下文变量
Dim objCtx As ObjectContext
'' 定义 IIS对象
Dim objApplication As Object
Dim objRequest As Object
Dim objResponse As Object
Dim objServer As Object
Dim objSession As Object
'' PDC事务日志API
Private Declare Function RegisterEventSource _
Lib "advapi32.dll" Alias "RegisterEventSourceA" _
(ByVal lpUNCServerName As String, ByVal lpSourceName As String) As Long
Private Declare Function DeregisterEventSource Lib "advapi32.dll" (ByVal hEventLog As Long) As Long
Private Declare Function ReportEvent Lib "advapi32.dll" Alias "ReportEventA" _
(ByVal hEventLog As Long, ByVal wType As Integer, _
ByVal wCategory As Integer, ByVal dwEventID As Long, _
ByVal lpUserSid As Any, ByVal wNumStrings As Integer, _
ByVal dwDataSize As Long, plpStrings As Long, lpRawData As Any) As Boolean
Private Declare Function GetLastError Lib "kernel32" () As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
Private Declare Function GlobalAlloc _
Lib "kernel32&q