在实际施工中,经常会牵扯到为客户设置IIS服务器。原理并不复杂,但是实际操作时会很麻烦、繁琐,还要派工程师到现场。可否编程设置IIS服务器呢?我在本文中将稍作探讨,提供的例程很简单,只包括原理实现部分,距离实际工程应用还有很大差距。VB6.0编程设置IIS服务器是通过调用ADSI接口,设置Metabase实现的。 可在微软网站下载Metabase管理工具,网址如下: http://www.microsoft.com/downloads/details.aspx?FamilyID=48364a72-d54e-46dc-aacf-e3be887d17a6&DisplayLang=en安装Metabase管理工具可以验证VB程序对Metabase数据库的更改、设置。 当然,你用Windows所带的Internet服务管理器也是一样的。打开VB6.0开发环境,新建Exe工程。在工程引用中添加如下动态库。 Active DS Type Library Active DS IIS Extension Dll Active DS IIS Namespace ProviderForm1窗体上添加Command1按钮控件,Command1控件事件如下:Private Sub Command1_Click() Dim NamespaceObj As New IISNamespace Dim ServiceObj As Object Dim ServerObj As Object Dim VDirObj As ObjectOn Error GoTo ErrLine'Create a new server Set ServiceObj = NamespaceObj.GetObject("IIsWebService", "Localhost/W3SVC") Set ServerObj = ServiceObj.Create("IIsWebServer", "18")'Next, configure new server ServerObj.ServerSize = 1 ServerObj.ServerComment = "IISTest" ServerObj.ServerBindings = ":88:"'Write info back to Metabase ServerObj.SetInfo'Create virtual root directory Set VDirObj = ServerObj.Create("IIsWebVirtualDir", "ROOT")'Configure new virtual root VDirObj.Path = "C:\Inetpub" VDirObj.AccessRead = True VDirObj.AccessWrite = True VDirObj.EnableDirBrowsing = True'Write info back to Metabase VDirObj.SetInfo'Start the IIS Server that you recently created ServerObj.StartMsgBox "设置成功", , "" Exit SubErrLine: MsgBox Err.Description, , Err.NumberEnd Sub运行程序,点击Command1按钮(您要具备管理员的权限),程序将创建IISTest服务器,Root目录为C:\Inetpub,端口为88。打开IE浏览器,地址栏中输入http://localhost:88,验证刚才的设置。好了,先讲到这吧。最后,请注意:在实际工程中设置IIS服务器应谨慎,编程语句要严谨,对异常的处理也要考虑全面。再补充两句,也可以通过ASP页面,或Javascript、VBscript脚本实现上述功能。seaneal 2003/6/10
private sub form_load() Dim ServObj Dim VdirObj Dim Testpath On Error GoTo ErrHandle
Set ServObj = GetObject("IIS://LocalHost/w3svc/1/Root") If (Err <> 0) Then MsgBox ("GetObject (""IIS://LocalHost/w3svc/1/Root"") Failed!") Exit Sub End If Set VdirObj = ServObj.Create("IIsWebVirtualDir", "MyVdir") VdirObj.SetInfo If (Err <> 0) Then MsgBox ("CreateObject (""IIS://LocalHost/w3svc/1/Root/MyVdir"") Failed!") End If VdirObj.AccessRead = True VdirObj.AccessScript = True VdirObj.EnableDirBrowsing = True Testpath = "C:\Temp" VdirObj.Put "Path", (Testpath) VdirObj.SetInfo
If (Err <> 0) Then MsgBox ("Put (""Path"") Failed!") End If
MsgBox ("Create virtual directory is successful.")
Exit Sub
ErrHandle: MsgBox Err.Description end sub
Public Function WebVirtualDir(ByVal strWebSite As String, ByVal strFriendlyName As String, ByVal strWebPath As String, ByVal strDefaultDoc As String) As Boolean Dim objADSI As Object Dim objWebVDir As Object On Error GoTo Lib_Err Set objADSI = GetObject("IIS://LocalHost/W3SVC/1/Root") Set objWebVDir = objADSI.Create("IIsWebVirtualDir", strWebSite) objWebVDir.SetInfo Set objWebVDir = objADSI.GetObject("IIsWebVirtualDir", strWebSite) objWebVDir.AppCreate True objWebVDir.Put "AppFriendlyName", strFriendlyName objWebVDir.Put "AppRoot", "/LM/W3SVC/1/Root/" & strWebSite objWebVDir.Put "Path", strWebPath objWebVDir.Put "AppIsolated", 0 objWebVDir.Put "DefaultDoc", strDefaultDoc objWebVDir.Put "AccessFlags", 535 objWebVDir.SetInfo WebVirtualDir = True Lib_End: Set objWebVDir = Nothing Set objADSI = Nothing Exit Function Lib_Err: WebVirtualDir = False strError = Err.Description Err.Clear Resume Lib_End End FunctionPrivate Sub Command1_Click() Call WebVirtualDir("aa", "aa", "E:\Web", "Default.asp") End Sub
可在微软网站下载Metabase管理工具,网址如下:
http://www.microsoft.com/downloads/details.aspx?FamilyID=48364a72-d54e-46dc-aacf-e3be887d17a6&DisplayLang=en安装Metabase管理工具可以验证VB程序对Metabase数据库的更改、设置。
当然,你用Windows所带的Internet服务管理器也是一样的。打开VB6.0开发环境,新建Exe工程。在工程引用中添加如下动态库。
Active DS Type Library
Active DS IIS Extension Dll
Active DS IIS Namespace ProviderForm1窗体上添加Command1按钮控件,Command1控件事件如下:Private Sub Command1_Click()
Dim NamespaceObj As New IISNamespace
Dim ServiceObj As Object
Dim ServerObj As Object
Dim VDirObj As ObjectOn Error GoTo ErrLine'Create a new server
Set ServiceObj = NamespaceObj.GetObject("IIsWebService", "Localhost/W3SVC")
Set ServerObj = ServiceObj.Create("IIsWebServer", "18")'Next, configure new server
ServerObj.ServerSize = 1
ServerObj.ServerComment = "IISTest"
ServerObj.ServerBindings = ":88:"'Write info back to Metabase
ServerObj.SetInfo'Create virtual root directory
Set VDirObj = ServerObj.Create("IIsWebVirtualDir", "ROOT")'Configure new virtual root
VDirObj.Path = "C:\Inetpub"
VDirObj.AccessRead = True
VDirObj.AccessWrite = True
VDirObj.EnableDirBrowsing = True'Write info back to Metabase
VDirObj.SetInfo'Start the IIS Server that you recently created
ServerObj.StartMsgBox "设置成功", , ""
Exit SubErrLine:
MsgBox Err.Description, , Err.NumberEnd Sub运行程序,点击Command1按钮(您要具备管理员的权限),程序将创建IISTest服务器,Root目录为C:\Inetpub,端口为88。打开IE浏览器,地址栏中输入http://localhost:88,验证刚才的设置。好了,先讲到这吧。最后,请注意:在实际工程中设置IIS服务器应谨慎,编程语句要严谨,对异常的处理也要考虑全面。再补充两句,也可以通过ASP页面,或Javascript、VBscript脚本实现上述功能。seaneal 2003/6/10
Dim ServObj
Dim VdirObj
Dim Testpath On Error GoTo ErrHandle
Set ServObj = GetObject("IIS://LocalHost/w3svc/1/Root")
If (Err <> 0) Then
MsgBox ("GetObject (""IIS://LocalHost/w3svc/1/Root"") Failed!")
Exit Sub
End If Set VdirObj = ServObj.Create("IIsWebVirtualDir", "MyVdir")
VdirObj.SetInfo
If (Err <> 0) Then
MsgBox ("CreateObject (""IIS://LocalHost/w3svc/1/Root/MyVdir"") Failed!")
End If VdirObj.AccessRead = True
VdirObj.AccessScript = True
VdirObj.EnableDirBrowsing = True
Testpath = "C:\Temp"
VdirObj.Put "Path", (Testpath) VdirObj.SetInfo
If (Err <> 0) Then
MsgBox ("Put (""Path"") Failed!")
End If
MsgBox ("Create virtual directory is successful.")
Exit Sub
ErrHandle:
MsgBox Err.Description
end sub
Dim objADSI As Object
Dim objWebVDir As Object
On Error GoTo Lib_Err
Set objADSI = GetObject("IIS://LocalHost/W3SVC/1/Root")
Set objWebVDir = objADSI.Create("IIsWebVirtualDir", strWebSite)
objWebVDir.SetInfo
Set objWebVDir = objADSI.GetObject("IIsWebVirtualDir", strWebSite)
objWebVDir.AppCreate True
objWebVDir.Put "AppFriendlyName", strFriendlyName
objWebVDir.Put "AppRoot", "/LM/W3SVC/1/Root/" & strWebSite
objWebVDir.Put "Path", strWebPath
objWebVDir.Put "AppIsolated", 0
objWebVDir.Put "DefaultDoc", strDefaultDoc
objWebVDir.Put "AccessFlags", 535
objWebVDir.SetInfo
WebVirtualDir = True
Lib_End:
Set objWebVDir = Nothing
Set objADSI = Nothing
Exit Function
Lib_Err:
WebVirtualDir = False
strError = Err.Description
Err.Clear
Resume Lib_End
End FunctionPrivate Sub Command1_Click()
Call WebVirtualDir("aa", "aa", "E:\Web", "Default.asp")
End Sub