Creating the IIS SiteManagement Class Module

   

Creating the IIS SiteManagement Class Module

In this section, you will begin the first of several exercises throughout Part III "Exploring the ADSI Service Providers: IIS," that will ultimately yield the creation of the IISAdmin.DLL COM server.

Tip

You can download the Visual Basic 6.0 project or pre-compiled version of IISAdmin.DLL from http://www.newriders.com/adsi.


Example 8.1 Creating IISAdmin.DLL: Site Management Functions
  1. Open a new ActiveX DLL Visual Basic project.

  2. Set a reference to the Active DS Type Library by clicking the Project menu, References , and placing a check mark next to the Active DS Type Library entry. Click the OK command button to exit the References “Project1 dialog box.

  3. Rename the project Project1 as IIsAdmin .

  4. Rename the Class1 class module as IIsSiteManagement .

  5. Enter the following code into the General Declarations section of the class module:

    Public Function BackupOperations(ByVal TargetComputer As String, ByVal Action As String,  graphics/ccc.gifOptional ByVal BackupName As String) As Variant      On Error Resume Next      Dim IIsComputer As IADs      Set IIsComputer = GetObject("IIS://" & TargetComputer)      Select Case UCase(Action)           Case "BACKUP"                Dim Flags As Long                Flags = (MD_BACKUP_SAVE_FIRST Or MD_BACKUP_FORCE_BACKUP)                IIsComputer.Backup BackupName, MD_BACKUP_NEXT_VERSION, Flags                If Err.Number = 0 Then BackupOperations = True           Case "ENUMERATE"                Dim Version, Index, TermCond As Integer                Dim Location As Variant                Dim UTCDate As Variant                Dim NewElement() As Variant                Dim i As Long                Do While TermCond <> 1                     IIsComputer.EnumBackups ", Index, Version, Location, UTCDate                     If Err.Number <> 0 Then                          Exit Do                     End If                     i = UBound(NewElement) + 1                     ReDim Preserve NewElement(i)                     NewElement(i) = Location & vbTab & Version & vbTab & UTCDate                     Index = Index + 1                     Err.Number = 0                Loop                BackupOperations = NewElement           Case "RESTORE"                Call IIsComputer.Restore(BackupName, MD_BACKUP_HIGHEST_VERSION, 0)                If Err.Number = 0 Then BackupOperations = True           Case "DELETE"                Call IIsComputer.DeleteBackup(BackupName, MD_BACKUP_HIGHEST_VERSION)                If Err.Number = 0 Then BackupOperations = True      End Select End Function Public Function MaxBandwidth(ByVal TargetComputer As String, ByVal Action As String,  graphics/ccc.gifOptional ByVal NewThrottleValue As Long) As Variant      Dim IIsComputer As IADs      Set IIsComputer = GetObject("IIS://" & TargetComputer)      Select Case UCase(Action)           Case "QUERY"                MaxBandwidth = IIsComputer.MaxBandwidth           Case "SET"                IIsComputer.MaxBandwidth = NewThrottleValue                IIsComputer.SetInfo                If Err.Number = 0 Then MaxBandwidth = True      End Select End Function Public Function MIMETypeManagement(ByVal TargetComputer As String, ByVal Action As String, graphics/ccc.gif Optional ByVal MIMEExtension As String, Optional ByVal MIMEType As String) As Variant      On Error Resume Next      Dim IIsComputer As IADs      Set IIsComputer = GetObject("IIS://" & TargetComputer & "/MimeMap")      Select Case UCase(Action)           Case "ENUMERATE"                Dim MimeMapping As Variant                Dim NewElement() As Variant                Dim i As Long                For Each MimeMapping In IIsComputer.MimeMap                     i = UBound(NewElement) + 1                     ReDim Preserve NewElement(i)                     NewElement(i) = MimeMapping.Extension & vbTab & MimeMapping.MIMEType                Next                MIMETypeManagement = NewElement           Case "ADD"                If MIMEType <> " And MIMEExtension <> " Then                     Dim NewMimeMapping As Variant                     NewMimeMapping = IIsComputer.GetEx("MimeMap")                     i = UBound(NewMimeMapping) + 1                     ReDim Preserve NewMimeMapping(i)                     Set NewMimeMapping(i) = CreateObject("MimeMap")                     NewMimeMapping(i).MIMEType = MIMEType                     NewMimeMapping(i).Extension = MIMEExtension                     IIsComputer.PutEx ADS_PROPERTY_UPDATE, "MimeMap", NewMimeMapping                     Err.Number = 0                     IIsComputer.SetInfo                     If Err.Number = 0 Then MIMETypeManagement = True                Else                     MIMETypeManagement = False                End If           Case "REMOVE"                If MIMEExtension <> " Then                     Dim MapToDelete As String                     Dim MimeItem As Variant                     NewMimeMapping = IIsComputer.MimeMap                     For Each MimeMapping In IIsComputer.MimeMap                          If MimeMapping.Extension <> MIMEExtension Then                               ReDim Preserve NewMimeMapping(i)                               Set NewMimeMapping(i) = CreateObject("MimeMap")                               NewMimeMapping(i).MIMEType = MimeMapping.MIMEType                               NewMimeMapping(i).Extension = MimeMapping.Extension                               i = i + 1                          End If                     Next                     IIsComputer.PutEx ADS_PROPERTY_UPDATE, "MimeMap", NewMimeMapping                     Err.Number = 0                     IIsComputer.SetInfo                     If Err.Number = 0 Then MIMETypeManagement = True                Else                     MIMETypeManagement = False                End If      End Select End Function Public Function SiteLogging(ByVal TargetComputer As String, ByVal IIsService As String,  graphics/ccc.gifByVal SiteIndex As Integer, ByVal Action As String, ByVal LoggingProperty As String,  graphics/ccc.gifOptional ByVal NewValue) As Variant      Dim Site As IADs      Dim Item As Variant      Select Case UCase(IIsService)           Case "WWW"                Set Site = GetObject("IIS://" & TargetComputer & "/W3SVC/" & SiteIndex)           Case "FTP"                Set Site = GetObject("IIS://" & TargetComputer & "/MSFTPSVC/" & SiteIndex)           Case "SMTP"                Set Site = GetObject("IIS://" & TargetComputer & "/SMTPSVC/" & SiteIndex)           Case "NNTP"                Set Site = GetObject("IIS://" & TargetComputer & "/NNTPSVC/" & SiteIndex)      End Select      Select Case UCase(Action)           Case "QUERY"                Select Case UCase(LoggingProperty)                     Case "LOGGINGENABLED"                          SiteLogging = Site.LogType                     Case "LOGTYPE"                          Dim Log As IADs                          Set Log = GetObject("IIS://" & TargetComputer & "/logging")                          For Each Item In Log                               If Site.LogPluginCLSID = Item.LogModuleID Then                                    SiteLogging = Item.Name                               End If                          Next                     Case "LOGFILEPERIOD"                          SiteLogging = Site.LogFilePeriod                     Case "TRUNCATESIZE"                          SiteLogging = Site.LogFileTruncateSize                End Select           Case "SET"                Select Case UCase(LoggingProperty)                     Case "LOGGINGENABLED"                          Site.LogType = NewValue                          Site.SetInfo                     Case "LOGTYPE"                          Set Log = GetObject("IIS://" & TargetComputer & "/logging")                          Dim NewLogFormatName As String                          Select Case UCase(NewValue)                               Case "NCSA"                                    NewValue = "NCSA Common Log File Format"                               Case "ODBC"                                    NewValue = "ODBC Logging"                               Case "IIS"                                    NewValue = "Microsoft IIS Log File Format"                               Case "W3C"                                    NewValue = "W3C Extended Log File Format"                          End Select                          For Each Item In Log                              If Item.Name = NewValue Then                                  Site.LogPluginCLSID = Item.LogModuleID                                  Site.SetInfo                              End If                          Next                     Case "LOGFILEPERIOD"                          Site.LogFilePeriod = NewValue                          Site.SetInfo                     Case "TRUNCATESIZE"                          Site.LogFilePeriod = 0                          Site.LogFileTruncateSize = NewValue                          Site.SetInfo                End Select                If Err.Number = 0 Then SiteLogging = True      End Select End Function Public Function ExtendedLogProperty(ByVal TargetComputer As String, ByVal IIsService As  graphics/ccc.gifString, ByVal SiteIndex As Integer, ByVal Action As String, ByVal LoggingProperty As  graphics/ccc.gifString, Optional ByVal NewValue) As Variant      Dim Site As IADs      Select Case UCase(IIsService)           Case "WWW"                Set Site = GetObject("IIS://" & TargetComputer & "/W3SVC/" & SiteIndex)           Case "FTP"                Set Site = GetObject("IIS://" & TargetComputer & "/MSFTPSVC/" & SiteIndex)           Case "SMTP"                Set Site = GetObject("IIS://" & TargetComputer & "/SMTPSVC/" & SiteIndex)           Case "NNTP"                Set Site = GetObject("IIS://" & TargetComputer & "/NNTPSVC/" & SiteIndex)      End Select      Select Case UCase(Action)           Case "QUERY"                Select Case UCase(LoggingProperty)                     Case "DATE"                          ExtendedLogProperty = Site.LogExtFileDate                     Case "TIME"                          ExtendedLogProperty = Site.LogExtFileTime                     Case "CLIENTIP"                          ExtendedLogProperty = Site.LogExtFileClientIp                     Case "USERNAME"                          ExtendedLogProperty = Site.LogExtFileUserName                     Case "SERVICENAME"                          ExtendedLogProperty = Site.LogExtFileSiteName                     Case "SERVERNAME"                          ExtendedLogProperty = Site.LogExtFileComputerName                     Case "SERVERIP"                          ExtendedLogProperty = Site.LogExtFileServerIp                     Case "SERVERPORT"                          ExtendedLogProperty = Site.LogExtFileServerPort                     Case "METHOD"                          ExtendedLogProperty = Site.LogExtFileMethod                     Case "URISTEM"                          ExtendedLogProperty = Site.LogExtFileUriStem                     Case "URIQUERY"                          ExtendedLogProperty = Site.LogExtFileUriQuery                     Case "HTTPSTATUS"                          ExtendedLogProperty = Site.LogExtFileHttpStatus                     Case "WIN32STATUS"                          ExtendedLogProperty = Site.LogExtFileWin32Status                     Case "BYTESSENT"                          ExtendedLogProperty = Site.LogExtFileBytesSent                     Case "BYTESRECEIVED"                          ExtendedLogProperty = Site.LogExtFileBytesRecv                     Case "TIMETAKEN"                          ExtendedLogProperty = Site.LogExtFileTimeTaken                     Case "PROTOCOLVERSION"                          ExtendedLogProperty = Site.LogExtFileProtocolVersion                     Case "USERAGENT"                          ExtendedLogProperty = Site.LogExtFileUserAgent                     Case "COOKIE"                          ExtendedLogProperty = Site.LogExtFileCookie                     Case "REFERRER"                          ExtendedLogProperty = Site.LogExtFileReferer                End Select           Case "SET"                Select Case UCase(LoggingProperty)                     Case "DATE"                          Site.LogExtFileDate = NewValue                          Site.SetInfo                     Case "TIME"                          Site.LogExtFileTime = NewValue                          Site.SetInfo                     Case "CLIENTIP"                          Site.LogExtFileClientIp = NewValue                          Site.SetInfo                     Case "USERNAME"                          Site.LogExtFileUserName = NewValue                          Site.SetInfo                     Case "SERVICENAME"                          Site.LogExtFileSiteName = NewValue                          Site.SetInfo                     Case "SERVERNAME"                          Site.LogExtFileComputerName = NewValue                          Site.SetInfo                     Case "SERVERIP"                          Site.LogExtFileServerIp = NewValue                          Site.SetInfo                     Case "SERVERPORT"                          Site.LogExtFileServerPort = NewValue                          Site.SetInfo                     Case "METHOD"                          Site.LogExtFileMethod = NewValue                          Site.SetInfo                     Case "URISTEM"                          Site.LogExtFileUriStem = NewValue                          Site.SetInfo                     Case "URIQUERY"                          Site.LogExtFileUriQuery = NewValue                          Site.SetInfo                     Case "HTTPSTATUS"                          Site.LogExtFileHttpStatus = NewValue                          Site.SetInfo                     Case "WIN32STATUS"                          Site.LogExtFileWin32Status = NewValue                          Site.SetInfo                     Case "BYTESSENT"                          Site.LogExtFileBytesSent = NewValue                          Site.SetInfo                     Case "BYTESRECEIVED"                          Site.LogExtFileBytesRecv = NewValue                          Site.SetInfo                     Case "TIMETAKEN"                          Site.LogExtFileTimeTaken = NewValue                          Site.SetInfo                     Case "PROTOCOLVERSION"                          Site.LogExtFileProtocolVersion = NewValue                          Site.SetInfo                     Case "USERAGENT"                          Site.LogExtFileUserAgent = NewValue                          Site.SetInfo                     Case "COOKIE"                          Site.LogExtFileCookie = NewValue                          Site.SetInfo                     Case "REFERRER"                          Site.LogExtFileReferer = NewValue                          Site.SetInfo                End Select                If Err.Number = 0 Then ExtendedLogProperty = True      End Select End Function Public Function ODBCLogging(ByVal TargetComputer As String, ByVal IIsService As String,  graphics/ccc.gifByVal SiteIndex As Integer, ByVal Action As String, ByVal LoggingProperty As String,  graphics/ccc.gifOptional ByVal NewValue) As Variant      Dim Site As IADs      Select Case UCase(IIsService)           Case "WWW"                Set Site = GetObject("IIS://" & TargetComputer & "/W3SVC/" & SiteIndex)           Case "FTP"                Set Site = GetObject("IIS://" & TargetComputer & "/MSFTPSVC/"& SiteIndex)           Case "SMTP"                Set Site = GetObject("IIS://" & TargetComputer & "/SMTPSVC/" & SiteIndex)            Case "NNTP"                Set Site = GetObject("IIS://" & TargetComputer & "/NNTPSVC/" & SiteIndex)      End Select      Select Case UCase(Action)           Case "QUERY"                Select Case UCase(LoggingProperty)                     Case "DSN"                          ODBCLogging = Site.LogOdbcDataSource                     Case "PASSWORD"                          ODBCLogging = Site.LogOdbcPassword                     Case "USERNAME"                          ODBCLogging = Site.LogOdbcTableName                     Case "TABLENAME"                          ODBCLogging = Site.LogOdbcUserName                End Select           Case "SET"                Select Case UCase(LoggingProperty)                     Case "DSN"                          Site.LogOdbcDataSource = NewValue                          Site.SetInfo                     Case "PASSWORD"                          Site.LogOdbcPassword = NewValue                          Site.SetInfo                     Case "USERNAME"                          Site.LogOdbcTableName = NewValue                          Site.SetInfo                     Case "TABLENAME"                          Site.LogOdbcUserName = NewValue                          Site.SetInfo                End Select                If Err.Number = 0 Then ODBCLogging = True      End Select End Function Public Function EnumerateSites(ByVal TargetComputer As String, ByVal IIsService As  graphics/ccc.gifString) As Variant      On Error Resume Next      Dim Parent As IADs      Dim Child As IADs      Dim NewElement() As Variant      Dim i As Long      Select Case UCase(IIsService)           Case "WWW"                Set Parent = GetObject("IIS://" & TargetComputer & "/W3SVC")           Case "FTP"                Set Parent = GetObject("IIS://" & TargetComputer & "/MSFTPSVC")           Case "SMTP"                Set Parent = GetObject("IIS://" & TargetComputer & "/SMTPSVC")           Case "NNTP"                Set Parent = GetObject("IIS://" & TargetComputer & "/NNTPSVC")      End Select      For Each Child In Parent           If IsNumeric(Child.Name) Then                i = UBound(NewElement) + 1                ReDim Preserve NewElement(i)                NewElement(i) = Child.Name & vbTab & Child.ServerComment           End If      Next      EnumerateSites = NewElement End Function Public Function CreateSite(ByVal TargetComputer As String, ByVal IIsService As String,  graphics/ccc.gifByVal SiteName As String, ByVal SitePath As String) As Boolean      Dim Parent As IADs      Dim Child As Variant      Dim NewSite As IADs      Dim NewRoot As IADs      Dim Index As Integer      Select Case UCase(IIsService)           Case "WWW"                Set Parent = GetObject("IIS://" & TargetComputer & "/W3SVC")           Case "FTP"                Set Parent = GetObject("IIS://" & TargetComputer & "/MSFTPSVC")           Case "SMTP"                Set Parent = GetObject("IIS://" & TargetComputer & "/SMTPSVC")           Case "NNTP"                Set Parent = GetObject("IIS://" & TargetComputer & "/NNTPSVC")      End Select      For Each Child In Parent           If IsNumeric(Child.Name) Then                If Index < Child.Name Then                     Index = Child.Name                End If           End If      Next      Index = Index + 1      Select Case UCase(IIsService)           Case "WWW"                Set NewSite = Parent.Create("IIsWebServer", Index)                NewSite.ServerComment = SiteName                NewSite.SetInfo                Set NewRoot = NewSite.Create("IIsWebVirtualDir", "Root")                NewRoot.Path = SitePath                Err.Number = 0                NewRoot.SetInfo           Case "FTP"                Set NewSite = Parent.Create("IIsFTPServer", Index)                NewSite.ServerComment = SiteName                NewSite.SetInfo                Set NewRoot = NewSite.Create("IIsFTPVirtualDir", "Root")                NewRoot.Path = SitePath                Err.Number = 0                NewRoot.SetInfo      End Select      If Err.Number = 0 Then CreateSite = True End Function Public Function DeleteSite(ByVal TargetComputer As String, ByVal IIsService As String,  graphics/ccc.gifByVal SiteName As String) As Boolean      Dim Parent As IADs      Dim Child As Variant      Dim NewSite As IADs      Dim Counter As Integer      Dim IndexValue As Long      Select Case UCase(IIsService)           Case "WWW"                Set Parent = GetObject("IIS://" & TargetComputer & "/W3SVC")           Case "FTP"                Set Parent = GetObject("IIS://" & TargetComputer & "/MSFTPSVC")      End Select      Counter = 0      For Each Child In Parent           If IsNumeric(Child.Name) Then                If LCase(Child.ServerComment) = LCase(SiteName) Then                     Counter = Counter + 1                     IndexValue = Child.Name                End If           End If      Next      If Counter = 1 Then           Select Case UCase(IIsService)                Case "WWW"                     Call Parent.Delete("IIsWebServer", IndexValue)                Case "FTP"                     Call Parent.Delete("IIsFTPServer", IndexValue)           End Select           Set Parent = Nothing      End If      If Err.Number = 0 Then DeleteSite = True End Function Public Function EnumerateDirectory(ByVal TargetComputer As String, ByVal IIsService As  graphics/ccc.gifString, ByVal SiteIndex As Integer, ByVal RelativePath As String) As Variant      On Error Resume Next      Dim Parent As IADs      Dim Child As Variant      Dim NewElement() As Variant      Dim i As Long      Select Case UCase(IIsService)           Case "WWW"                Set Parent = GetObject("IIS://" & TargetComputer & "/W3SVC/" & SiteIndex &  graphics/ccc.gif"/ROOT" & RelativePath)           Case "FTP"                Set Parent = GetObject("IIS://" & TargetComputer & "/MSFTPSVC/" &  graphics/ccc.gifSiteIndex & "/ROOT" & RelativePath)           Case "SMTP"                Set Parent = GetObject("IIS://" & TargetComputer & "/SMTPSVC/" & SiteIndex  graphics/ccc.gif& "/ROOT" & RelativePath)           Case "NNTP"                Set Parent = GetObject("IIS://" & TargetComputer & "/NNTPSVC/" & SiteIndex  graphics/ccc.gif& "/ROOT" & RelativePath)      End Select      For Each Child In Parent           i = UBound(NewElement) + 1           ReDim Preserve NewElement(i)           NewElement(i) = Child.Name      Next      EnumerateDirectory = NewElement End Function Public Function CreateVirDir(ByVal TargetComputer As String, ByVal IIsService As String,  graphics/ccc.gifByVal SiteIndex As Integer, ByVal VDirName As String, ByVal VDirPath As String) As  graphics/ccc.gifBoolean      Dim Parent As IADs      Dim NewVDir As IADs      Select Case UCase(IIsService)           Case "WWW"                Set Parent = GetObject("IIS://" & TargetComputer & "/W3SVC/" & SiteIndex &  graphics/ccc.gif"/Root")                Set NewVDir = Parent.Create("IIsWebVirtualDir", VDirName)           Case "FTP"                Set Parent = GetObject("IIS://" & TargetComputer & "/MSFTPSVC/"& SiteIndex  graphics/ccc.gif& "/Root")                Set NewVDir = Parent.Create("IIsFTPVirtualDir", VDirName)           Case "NNTP"                Set Parent = GetObject("IIS://" & TargetComputer & "/NNTPSVC/" & SiteIndex  graphics/ccc.gif& "/Root")                Set NewVDir = Parent.Create("IIsNNTPVirtualDir", VDirName)      End Select      NewVDir.SetInfo      NewVDir.Path = VDirPath      Err.Number = 0      NewVDir.SetInfo      If Err.Number = 0 Then CreateVirDir = True End Function Public Function DeleteVirDir(ByVal TargetComputer As String, ByVal IIsService As String,  graphics/ccc.gifByVal SiteIndex As Integer, ByVal VDirName As String) As Boolean      Dim Parent As IADs      Select Case UCase(IIsService)           Case "WWW"                Set Parent = GetObject("IIS://" & TargetComputer & "/W3SVC/" & SiteIndex &  graphics/ccc.gif"/Root")                Call Parent.Delete("IIsWebVirtualDir", VDirName)           Case "FTP"                Set Parent = GetObject("IIS://" & TargetComputer & "/MSFTPSVC/"& SiteIndex  graphics/ccc.gif& "/Root")                Call Parent.Delete("IIsFTPVirtualDir", VDirName)           Case "NNTP"                Set Parent = GetObject("IIS://" & TargetComputer & "/NNTPSVC/" & SiteIndex  graphics/ccc.gif& "/Root")                Call Parent.Delete("IIsNntpVirtualDir", VDirName)      End Select      Set Parent = Nothing      If Err.Number = 0 Then DeleteVirDir = True End Function Public Function CreateWebDirEntry(ByVal TargetComputer As String, ByVal SiteIndex As  graphics/ccc.gifInteger, ByVal RelativePath As String, ByVal NewEntry As String) As Boolean      Dim VirtualDirectory As IADs      Dim WebDir As IADs      Set VirtualDirectory = GetObject("IIS://" & TargetComputer & "/W3SVC/" & SiteIndex &  graphics/ccc.gif"/ROOT"&RelativePath)      Set WebDir = VirtualDirectory.Create("IIsWebDirectory", NewEntry)      WebDir.SetInfo      If Err.Number = 0 Then CreateWebDirEntry = True End Function Public Function DeleteWebDirEntry(ByVal TargetComputer As String, ByVal SiteIndex As  graphics/ccc.gifInteger, ByVal RelativePath As String, ByVal EntryToDelete As String) As Boolean      Dim VirtualDirectory As IADsContainer      Set VirtualDirectory = GetObject("IIS://" & TargetComputer & "/W3SVC/" & SiteIndex &  graphics/ccc.gif"/ROOT" & RelativePath)      Call VirtualDirectory.Delete("IIsWebDirectory", EntryToDelete)      If Err.Number = 0 Then DeleteWebDirEntry = True End Function Public Function CreateWebFileEntry(ByVal TargetComputer As String, ByVal SiteIndex As  graphics/ccc.gifInteger, ByVal RelativePath As String, ByVal NewEntry As String) As Boolean      Dim VirtualDirectory As IADs      Dim WebFile As IADs      Set VirtualDirectory = GetObject("IIS://" & TargetComputer & "/W3SVC/" & SiteIndex &  graphics/ccc.gif"/ROOT" & RelativePath)      Set WebFile = VirtualDirectory.Create("IIsWebFile", NewEntry)      WebFile.SetInfo      If Err.Number = 0 Then CreateWebFileEntry = True End Function Public Function DeleteWebFileEntry(ByVal TargetComputer As String, ByVal SiteIndex As  graphics/ccc.gifInteger, ByVal RelativePath As String, ByVal EntryToDelete As String) As Boolean      Dim VirtualDirectory As IADs      Set VirtualDirectory = GetObject("IIS://" & TargetComputer & "/W3SVC/" & SiteIndex &  graphics/ccc.gif"/ROOT" & RelativePath)      Call VirtualDirectory.Delete("IIsWebFile", EntryToDelete)      If Err.Number = 0 Then DeleteWebFileEntry = True End Function Public Function SiteOperations(ByVal TargetComputer As String, ByVal IIsService As String, graphics/ccc.gif ByVal SiteIndex As Integer, ByVal Operation As String) As Variant      Dim Site As IADs      Dim SiteStatus As Integer      Select Case UCase(IIsService)           Case "WWW"                Set Site = GetObject("IIS://" & TargetComputer & "/W3SVC/" & SiteIndex)           Case "FTP"                Set Site = GetObject("IIS://" & TargetComputer & "/MSFTPSVC/" & SiteIndex)           Case "SMTP"                Set Site = GetObject("IIS://" & TargetComputer & "/SmtpSvc/" & SiteIndex)           Case "NNTP"                Set Site = GetObject("IIS://" & TargetComputer & "/NNTPSVC/" & SiteIndex)       End Select      SiteStatus = Site.Status      Select Case UCase(Operation)           Case "START"                If SiteStatus = 4 Or SiteStatus = 3 Then                     Site.Start                     If Err.Number = 0 Then SiteOperations = True                End If           Case "STOP"                If SiteStatus = 2 Or SiteStatus = 1 Then                     Site.Stop                     If Err.Number = 0 Then SiteOperations = True                End If           Case "CONTINUE"                If SiteStatus = 6 Or SiteStatus = 5 Then                     Site.Continue                     If Err.Number = 0 Then SiteOperations = True                End If           Case "PAUSE"                If SiteStatus = 1 Or SiteStatus = 2 Then                     Site.Pause                     If Err.Number = 0 Then SiteOperations = True                End If           Case "QUERY"                Select Case SiteStatus                     Case 1                          SiteOperations = "Starting"                     Case 2                          SiteOperations = "Started"                     Case 3                          SiteOperations = "Stopping"                     Case 4                          SiteOperations = "Stopped"                     Case 5                          SiteOperations = "Pausing"                     Case 6                          SiteOperations = "Paused"                     Case 7                          SiteOperations = "Continuing"                End Select      End Select End Function 
  6. Compile the code as IIsAdmin.DLL.

  7. Save and close the IIsAdmin project.

Tip

If you do not wish to share your code between applications, you can enter the preceding code into a code module in any Visual Basic application.



   
Top


Windows NT. 2000 ADSI Scripting for System Administration
Windows NT/2000 ADSI Scripting for System Administration
ISBN: 1578702194
EAN: 2147483647
Year: 2000
Pages: 194
Authors: Thomas Eck

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net