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)?刂芖eb和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: 設定虛擬目錄是否允許讀取。