关注联楷|返回首页 | 网站案例 | 帮助中心

合作共赢、快速高效、优质的网站建设提供商

上海网站建设 

服务热线:021-61394118

上海联楷科技

ASP与nt用户

作者:佚名   时间:2012-04-13   分享到:

 本章重点介绍ASP如何透过ADSI来管理使用者与群组、管理服务、管理IIS网站等功能。Web控制Windows资源如何使用浏览器透过网际网路或intranet内部网路,来存取管理Windows 2000的资源呢?答案为使用Active Directory Service(动态目录服务,简称ADS)。Active Directory Service,将使用者帐号、群组、服务、档案、网路上的印表机、IIS、Exchange Server等,都视为目录下的一个个体,我们可以查询,或是控制目录下的个体。要管理Active Directory Service,微软公司所提供的程式介面(Object及函式),就是ADSI(Active Directory Service Interface)。Windows 2000提供Active Directory Service的功能,Windows NT 4.0只要安装一个ADSI Provider(adsi.exe档案),就可以使用Active Directory Service的功能,您可以到 http://www.microsoft.com/ntserver/guide/adsi.asp 下载。使用浏览器,透过网际网路或intranet,经由於IIS网站伺服器执行的ASP(Active Server Pages)程式,来呼叫ADSI,即可做到:
管理 使用者帐号: 譬如查询某群组的 使用者 、新建、修改、删除 使用者帐号 。


管理 群组: 譬如查询 群组 、新建、删除 群组 。


管理控制台的 服务 。


设定 档案共用 。查询网路使用共用档案的记录。


管理网路列印工作。


管理IIS。


管理Exchange Server。


若要使用浏览器,透过呼叫ADSI的方式来修改Windows 2000的资源,您不能使用 允许匿名存取 的方式。方法为执行 Internet服务管理员 ,於所执行ASP虚拟目录按右键并选择 内容 ,於 目录安全设定 之 匿名存取及验证控制 中按下 编辑 按钮,且不勾选 允许匿名存取 。本章范例,须於 Internet服务管理员 在虚拟目录IIS5Samp下之adsi目录按右键并选择 内容 ,於 目录安全设定 之 匿名存取及验证控制 中按下 编辑 按钮,只勾选 基本验证 ,如下:

并修改adsi.asp程式中有关DOMAIN与Machine为您电脑实际的网域与电脑之名称才能正常动作,如下:
<%DOMAIN = "WWW"Machine = "ASP"User = "Administrator"%>4-1 ADSI如何管理使用者与群组呢?查询某群组的使用者若要列出一般使用者(users)群组的所有使用者,ASP程式码adsi.asp如下:
<%Set Obj1 = GetObject("WinNT://电脑名称/users")Response.Write "列出 " & Obj1.Name & " 於: " & Obj1.Parent & ""For Each Member in Obj1.Members Response.write Member.Name & " 为 " & Member.class & ""Next%>Member.Name列出使用者,Member.class会得知其为群组(Group)或使用者(User)。新建使用者帐号执行 系统管理工具 的 网域使用者管理员 可以新建Windows 2000的使用者帐号,如下:如何使用浏览器透过网际网路或intranet内部网路,来新建Windows 2000的使用者帐号呢 ? 譬如说,我们要新建一个使用者名称叫做jack的Windows 2000使用者帐号,ASP程式码adsi.asp只要七行:
<% Set ComputerObj = GetObject("WinNT://电脑名称")Set NewUser = ComputerObj.Create("User", "jack")NewUser.SetInfo NewUser.SetPassword("密码")NewUser.FullName = "全名" NewUser.Description = "说明" NewUser.SetInfo %>首 先使用Create("User", "使用者名称″)的方法新建一个使用者帐号,呼叫SetInfo方法即可储存变更。接着,使用SetPassword的方法设定「密码」,於 FullName属性设定全名,於Description属性设定「说明」,最後再呼叫SetInfo方法储存变更,即可以新建一个使用者帐号。修改使用者帐号您可以使用浏览器,使用ASP程式码透过呼叫ADSI的方式来修改使用者帐号。譬如说,若要修改使用者帐号的「说明」,您可使用get("Description")方法将「说明」设定值读出,於Description属性设定「说明」变更後再储存回去,ASP程式码adsi.asp如下:
<%  Set Obj1 = GetObject("WinNT://网域/电脑名称/使用者名称")UserDes = Obj1.get("Description")Obj1.Description = UserDes & " 123" Obj1.SetInfo  Obj1.GetInfo  UserDes = Obj1.get("Description")Response.write "New Description: " & UserDes %>上例将「说明」加上「 123」变更後再储存回去。您也可以修改使用者帐号的密码。方法为使用ChangePassword "旧密码", "新密码",ASP程式码adsi.asp如下:
<%Set UserObj = GetObject("WinNT://电脑名称/使用者名称")UserObj.ChangePassword "旧密码", "新密码"%>您也可以变更使用者帐号的相关设定,每个设定使用一个位元代表:
 使用者下次登入时须变更密码: &H20000


 使用者不得变更密码: &H0040


 密码永久正确: &H10000


 帐户暂时停用: &H0002


您可使用Get("UserFlags")方法将设定值读出,变更相对应的一个位元设定後再储存回去。譬如说,我们变更使用者名称jack为 密码永久正确 ,ASP程式码adsi.asp如下:
<%Set UserObj = GetObject("WinNT://电脑名称/jack")Flags = UserObj.Get("UserFlags")UserObj.Put "UserFlags", Flags Or &H10000UserObj.SetInfo%>变更使用者名称jack为不是 使用者下次登入时须变更密码 ,ASP程式码如下:
<%Set UserObj = GetObject("WinNT://电脑名称/jack")Flags = UserObj.Get("UserFlags")UserObj.Put "UserFlags", Flags And &HFDFFFFUserObj.SetInfo%>删除使用者帐号您可以使用浏览器,使用ASP程式码透过呼叫ADSI的方式来删除使用者帐号。方法为使用「Delete "user", 使用者名称」方法来删除使用者帐号。譬如说,若要删除使用者帐号jack,ASP程式码adsi.asp如下:
<%On Error Resume Next Set UserObj = GetObject("WinNT://电脑名称/jack") If Err = &H800401E4 Then   Response.Write "User Not Found"   Response.EndEnd If Set ParentObj = GetObject(UserObj.Parent) ParentObj.Delete "user", UserObj.NameSet UserObj = NothingResponse.Write "Done"%>查询群组若要列出所有的群组,ASP程式码adsi.asp如下:
<% Set ComputerObj = GetObject("WinNT://电脑名称")ComputerObj.Filter = Array("Group")    For Each Member in ComputerObj      Response.Write Member.Name & ":  " & Member.Class & ""   Next%>其中设定Filter = Array("Group")以便存取群组的资讯。Member.Name列出群组, Member.class会得知其为群组(Group)或使用者(User)。新建群组执行 系统管理工具 的 网域使用者管理员 可以新建Windows 2000的群组,如下:
 如何使用浏览器透过网际网路或intranet内部网路,来新建Windows 2000的群组呢 ?ASP程式码如下:
<% Set ComputerObj = GetObject("WinNT:// 网域")Set GroupObj = ComputerObj.Create("group", "新群组名称")GroupObj.SetInfo GroupObj.GroupDescription = Descript GroupObj.SetInfo %>首先使用Create("group", "新群组名称")的方法新建一个群组,呼叫SetInfo方法即储存变更。接着於GroupDescription属性设定「说明」,最後再呼叫SetInfo方法储存变更,即可新建一个群组。删除群组您可以使用浏览器,使用ASP程式码透过呼叫ADSI的方式来删除群组。方法为使用「Delete "group", 群组名称」方法来删除群组。ASP程式码如下:
<%Set ComputerObj = GetObject("WinNT:// 电脑名称")GroupPath = ComputerObj.ADsPath & "/群组名称" Set GroupObj = GetObject(GroupPath)Set ParentObj = GetObject(GroupObj.Parent)ParentObj.Delete "group", GroupObj.Name%>4-2 ADSI如何管理服务呢? 电脑管理 的 服务 可以用来管理各种Windows 2000的 服务 ,如下:
如何使用浏览器透过网际网路或intranet内部网路,来管理各种Windows 2000的 服务 呢?首先列出所有的服务,ASP程式码如下:
<% Set ComputerObj = GetObject("WinNT://电脑名称")ComputerObj.Filter = Array("Service")    For Each Member in ComputerObj      Response.Write Member.Name & ""   Next%>其中设定Filter = Array("Service")以便存取服务的资讯。Member.Name列出服务名称。您可以使用浏览器,使用ASP程式码透过呼叫ADSI的方式来启动、停止、暂停、继续一个服务。使用的方法如下:
 启动: ServiceObj.Start


 停止: ServiceObj.Stop


 暂停: ServiceObj.Pause


 继续: ServiceObj.Pause


譬如说,若要停止Alerter服务,ASP程式码adsi.asp如下:
<% Set ServiceObj = GetObject("WinNT://网域/电脑名称/Alerter") ServiceObj.Stop %>您可以使用浏览器,使用ASP程式码透过呼叫ADSI的方式来设定一个服务的 启动设定 。设定的StartType属性如下:
 自动: ServiceObj.StartType = 2


 手动: ServiceObj.StartType = 3


 停用: ServiceObj.StartType = 4


譬如说,若要变更Alerter服务的启动设定为手动,ASP程式码adsi.asp如下:
<% Set ServiceObj = GetObject("WinNT://网域/电脑名称/Alerter") ServiceObj.StartType = 3 %>4-3 ADSI如何管理IIS网站呢?管理IIS网站您可以透过浏览器使用ASP来控制管理一个网站。譬如:启动、暂停、继续、或停止一个Web站台、FTP站台、伺服器,或建立一个新的站台、建立一个新的虚拟目录、寻找站台,以及改变站台或虚拟目录的属性设定,譬如设定存取权限、设定最大频宽限制等。首先先定义待读取或设定的电脑、Web站台、虚拟目录、目录或档案等路径,语法如下,其中IisObj为定义的路径物件名称:Set IIsObj = GetObject("IIS://电脑名称/服务/站台编号/目录")其中路径「IIS://电脑名称/服务/站台编号/目录」,语法如下: 电脑名称: 为IIS伺服器的电脑名称,若为本机可以LocalHost代表。


 服务: Web站台为「W3SVC」,FTP站台为「MSFTPSVC」,SMTP Service为「SMTPSVC」,NNTP为「NNTPSVC 」。


 站台编号: 1代表第一个站台。


 目录: 虚拟目录,Root表示根目录。


IIS://LocalHost:表示为整个IIS伺服器。


IIS://LocalHost/W3SVC/1:表示「预设的Web站台」。


IIS://LocalHost/W3SVC/1/Root:表示「预设的Web站台」的主目录。


IIS://LocalHost/MSFTPSVC/1:表示为「预设的FTP站台」。


IIS://LocalHost/SMTPSVC/1:表示为「Default SMTP Site」。


IIS://LocalHost/NNTPSVC/1:表示为「Default NNTP Site」。


定义位址後即可以使用「GET」指令读取属性(properties)值,语法如下,其中IIsObj为上面所定义的位址物件名称:xxx = IIsObj.Get("属性名称")譬如「a = IIsObj.Get("AccessRead")」,表示读取AccessRead属性的设定值,储存到a的变数当中。若要设定IIS,可以使用「PUT」指令设定属性(properties)值,最後再使用SetInfo方法储存到Metabase当中。语法如下,其中IIsObj为上面所定义的位址物件名称:IIsObj.Put "属性名称", 设定值IIsObj.SetInfo譬如「IIsObj.Put "AccessRead", False」,表示设定AccessRead属性的设定值为False。存取权限设定范例如何透过浏览器使用ASP来设定一个虚拟目录、主目录或档案等的存取权限呢 ?方法为使用「GET」和「PUT」指令以读取和设定属性(properties)值,或者可以使用「.」以读取和设定属性(properties)值。相关的属性,如下: AccessRead: 读取。


 AccessWrite: 写入。


 AccessScript: 指令档。


 AccessExecute: 执行。


设定值为True(-1)或False(0)。控制Web和FTP站台如何透过浏览器使用ASP来启动、暂停、继续、或停止一个Web站台、FTP站台、或伺服器呢?为达到这个功能,您必须使用IIS Admin Objects所提供的方法(methods),如下: Continue: 继续一个Web站台、FTP站台、或伺服器。


 Pause : 暂停一个Web站台、FTP站台、或伺服器。


 Start: 启动一个Web站台、FTP站台、或伺服器。


 Stop : 停止一个Web站台、FTP站台、或伺服器。


首先先定义待设定的Web站台、FTP站台、或伺服器等路径,语法如下,其中IisObj为定义的路径物件名称:Set IIsObj = GetObject("IIS://电脑名称/服务/站台编号")譬如:IIS://LocalHost:表示为整个IIS伺服器。


IIS://LocalHost/W3SVC/1:表示「预设的Web站台」。


IIS://LocalHost/MSFTPSVC/1:表示为「预设的FTP站台」。


譬如启动一个Web站台,ASP程式码adsi.asp如下:<%ServerNo = "1"ComputerName = "LocalHost"On Error Resume Next'「 IIS://LocalHost/W3SVC/1」,表示为预设的Web站台。fullPath = "IIS://" & ComputerName & "/W3SVC/" & ServerNo'开启此路径。Set objServer = GetObject(fullPath)If Err.Number <> 0 Then Response.Write Now & ". 错误码: " & Hex(Err)& " - " & "无法开启 " & fullPath & "."End If '使用Start启动(开始)站台objServer.StartIf Err.Number <> 0 Then Response.Write Now & ". 错误码: " & Hex(Err)& " - " & "无法启动(开始)Web站台 " & fullPath & "."else Response.Write "已经启动(开始)Web站台 " & fullPath & "."End If%> 建立虚拟目录 如何透过浏览器使用ASP,来建立虚拟目录呢 ? 方法为使用「Create("IISWebVirtualDir","虚拟目录名称")」方法,以建立虚拟目录,并设定以下属性: 
 Path: 设定虚拟目录的实际物理路径。


 EnableDirBrowsing: 设定虚拟目录是否允许浏览目录。


 AccessRead: 设定虚拟目录是否允许读取。



如没特殊注明,文章均为上海联楷网络原创,转载请注明来自:http://www.linksj.com/contact/20151229/n7653.html

上海联楷网络新闻