' ' Copyright (c) Microsoft Corporation. All rights reserved. ' ' VBScript Source File ' ' Script Name: IIsExt.vbs ' Option Explicit On Error Resume Next ' Error codes Const ERR_OK = 0 Const ERR_GENERAL_FAILURE = 1 ''''''''''''''''''''' ' Messages Const L_NotEnoughParams_ErrorMessage = "Not enough parameters." Const L_InvalidSwitch_ErrorMessage = "Invalid switch: %1" Const L_CmdLib_ErrorMessage = "Could not create an instance of the CmdLib object." Const L_ChkCmdLibReg_ErrorMessage = "Please register the Microsoft.CmdLib component." Const L_ScriptHelper_ErrorMessage = "Could not create an instance of the IIsScriptHelper object." Const L_ChkScpHelperReg_ErrorMessage = "Please, check if the Microsoft.IIsScriptHelper is registered." Const L_OnlyOneOper_ErrorMessage = "Please specify only one operation at a time." Const L_PassWithoutUser_ErrorMessage = "Please specify /u switch before using /p." Const L_WMIConnect_ErrorMessage = "Could not connect to WMI provider." Const L_Error_ErrorMessage = "Error &H%1: %2" Const L_Admin_ErrorMessage = "You cannot run this command because you are not an" Const L_Adminp2_ErrorMessage = "administrator on the server you are trying to configure." Const L_GetWebSvcObj_ErrorMessage = "Could not get web service object" Const L_EnApp_ErrorMessage = "Error while configuring application or extension." Const L_NoApp_ErrorMessage = "The specified application does not exist in the application" Const L_NoAppp2_ErrorMessage = "dependencies list." Const L_NoDep_ErrorMessage = "The specified application-extension relationship does not" Const L_NoDepp2_ErrorMessage = "exist in the application dependencies list." Const L_NoExt_ErrorMessage = "The extension does not exist in the restriction list." Const L_NoEfi_ErrorMessage = "The extension file does not exist in the restriction list." Const L_EnDep_ErrorMessage = "Error while configuring dependency." Const L_ShowList_ErrorMessage = "Error while showing list. Please confirm that the" Const L_ShowList2_ErrorMessage = "WebSvcExtRestrictionList and ApplicationDependencies" Const L_ShowList3_ErrorMessage = "properties exist and are set on the W3SVC node." Const L_RmEfi_ErrorMessage = "Error trying to delete extension. Make sure it exists" Const L_RmEfip2_ErrorMessage = "and is deletable." Const L_EnAppComplete_Message = "Enabling application complete." Const L_AddDpComplete_Message = "Adding dependency complete." Const L_RemDpComplete_Message = "Removing dependency complete." Const L_EnExtComplete_Message = "Enabling extension complete." Const L_DsExtComplete_Message = "Disabling extension complete." Const L_DsEFiComplete_Message = "Disabling extension file complete." Const L_EnEFiComplete_Message = "Enabling extension file complete." Const L_AdEFiComplete_Message = "Adding extension file complete." Const L_RmEFiComplete_Message = "Deleting extension file complete." Const L_ShowListFile_Message = "Status / Extension Path" Const L_ShowListFile2_Message = "------------------------" ''''''''''''''''''''' ' Help Const L_Empty_Text = "" ' General help messages Const L_SeeHelp_Message = "Type IIsExt /? for help." Const L_Help_HELP_General01_Text = "Description: Manages Web Service Extensions." Const L_Help_HELP_General02_Text = "Syntax: IIsExt [/s [/u [/p ]]]" Const L_Help_HELP_General02a_Text = " [/ListExt | /ListApp | /AddDep | /DisExt" Const L_Help_HELP_General03_Text = " /EnExt | /RmDep | /EnApp | /EnFile | /DisFile" Const L_Help_HELP_General04_Text = " /AddFile | /ListFile | /RmFile] " Const L_Help_HELP_General05_Text = "Switches:" Const L_Help_HELP_General06_Text = "Value Description" Const L_Help_HELP_General06a_Text = "/s Connect to machine ." Const L_Help_HELP_General06b_Text = " [Default: this system]" Const L_Help_HELP_General06c_Text = "/u Connect as \ or" Const L_Help_HELP_General06d_Text = " . [Default: current user]" Const L_Help_HELP_General06e_Text = "/p Password for the user." Const L_Help_HELP_General07_Text = "/EnApp Enables an application in the" Const L_Help_HELP_General07a_Text = " application dependencies list." Const L_Help_HELP_General08_Text = "/ListApp Lists the applications in the" Const L_Help_HELP_General08a_Text = " application dependencies list." Const L_Help_HELP_General09_Text = "/AddDep [ ...]" Const L_Help_HELP_General09a_Text = " Adds a dependency between an" Const L_Help_HELP_General09b_Text = " application in the application" Const L_Help_HELP_General09c_Text = " dependencies list and a Web Service" Const L_Help_HELP_General09d_Text = " Extension ID." Const L_Help_HELP_General10_Text = "/RmDep [ ...]" Const L_Help_HELP_General10a_Text = " Removes a dependency between an" Const L_Help_HELP_General10b_Text = " application in the application" Const L_Help_HELP_General10c_Text = " dependencies list and a Web Service" Const L_Help_HELP_General10d_Text = " Extension ID." Const L_Help_HELP_General11_Text = "/EnExt Enables all files for a Web Service" Const L_Help_HELP_General11a_Text = " Extension with the specified Web" Const L_Help_HELP_General11b_Text = " Service Extension ID." Const L_Help_HELP_General12_Text = "/DisExt Disables all files for a Web Service" Const L_Help_HELP_General12a_Text = " Extension with the specified Web" Const L_Help_HELP_General12b_Text = " Service Extension ID." Const L_Help_HELP_General13_Text = "/ListExt Lists Web Service Extension IDs for" Const L_Help_HELP_General13a_Text = " all defined Web Service Extensions." Const L_Help_HELP_General14_Text = "/EnFile Enables a single file in the" Const L_Help_HELP_General14a_Text = " restriction list." Const L_Help_HELP_General15_Text = "/DisFile Disables a single file in the" Const L_Help_HELP_General15a_Text = " restriction list." Const L_Help_HELP_General16_Text = "/ListFile Lists all the files in the" Const L_Help_HELP_General16a_Text = " restriction list." Const L_Help_HELP_General17_Text = "/RmFile Removes a file from the restriction" Const L_Help_HELP_General17a_Text = " list if it is deletable." Const L_Help_HELP_General18_Text = "/AddFile Adds a file to the restriction list." Const L_Help_HELP_General19_Text = "/AddFile /? Displays help for the /AddFile flag." Const L_Help_HELP_AddFile01_Text = "Description: Adds a file to the restriction list." Const L_Help_HELP_AddFile02_Text = "Syntax: IIsExt [/s [/u [/p ]]]" Const L_Help_HELP_AddFile02a_Text = " /AddFile " Const L_Help_HELP_AddFile03_Text = " " Const L_Help_HELP_AddFile07_Text = " The fully qualified path to the dll" Const L_Help_HELP_AddFile08_Text = " or exe, including the filename and" Const L_Help_HELP_AddFile09_Text = " extension. Special cases include" Const L_Help_HELP_AddFile09a_Text = " *.dll to enable/disable unlisted" Const L_Help_HELP_AddFile09b_Text = " ISAPI's and *.exe to enable/disable" Const L_Help_HELP_AddFile09c_Text = " unlisted CGI's." Const L_Help_HELP_AddFile10_Text = " Set this to 0 to disable or 1 to" Const L_Help_HELP_AddFile10a_Text = " enable the file after it is added." Const L_Help_HELP_AddFile11_Text = " This ID is an arbitrary identifier" Const L_Help_HELP_AddFile11a_Text = " that identifies the Web Service" Const L_Help_HELP_AddFile11b_Text = " Extension the file is associated with." Const L_Help_HELP_AddFile12_Text = " There can be one or more files for" Const L_Help_HELP_AddFile12a_Text = " each Web Service Extension" Const L_Help_HELP_AddFile13_Text = " Set this to 0 to prevent this file" Const L_Help_HELP_AddFile13a_Text = " from being deleted from the restriction" Const L_Help_HELP_AddFile14_Text = " list or 1 to allow this file to be" Const L_Help_HELP_AddFile14a_Text = " deleted from the restriction list." Const L_Help_HELP_AddFile15_Text = " This is a brief text description of" Const L_Help_HELP_AddFile15a_Text = " the Web Service Extension the file is" Const L_Help_HELP_AddFile16_Text = " associated with. Files with the same" Const L_Help_HELP_AddFile16a_Text = " ID should also have the same ShortDesc." '''''''''''''''''''''''' ' Operation codes Const OPER_ENAPP = 1 Const OPER_ADDDP = 3 Const OPER_REMDP = 4 Const OPER_ENEXT = 5 Const OPER_DSEXT = 6 Const OPER_ENEFI = 7 Const OPER_DSEFI = 8 Const OPER_ADEFI = 9 Const OPER_RMEFI = 10 Const OPER_LSAPP = 11 Const OPER_LSEXT = 12 Const OPER_LSEFI = 13 ' ' Main block ' Dim oScriptHelper, oCmdLib Dim intResult, intOperation Dim strServer, strUser, strPassword Dim strCmdLineOptions, strAppName Dim oError, aArgs ' Default values strServer = "." strUser = "" strPassword = "" intOperation = 0 ' Instantiate the CmdLib for output string formatting Set oCmdLib = CreateObject("Microsoft.CmdLib") If Err.Number <> 0 Then WScript.Echo L_CmdLib_ErrorMessage WScript.Echo L_ChkCmdLibReg_ErrorMessage WScript.Quit(ERR_GENERAL_FAILURE) End If Set oCmdLib.ScriptingHost = WScript.Application ' Instantiate script helper object Set oScriptHelper = CreateObject("Microsoft.IIsScriptHelper") If Err.Number <> 0 Then WScript.Echo L_ScriptHelper_ErrorMessage WScript.Echo L_ChkScpHelperReg_ErrorMessage WScript.Quit(ERR_GENERAL_FAILURE) End If Set oScriptHelper.ScriptHost = WScript ' Check if we are being run with cscript.exe instead of wscript.exe oScriptHelper.CheckScriptEngine ' Command Line parsing Dim argObj, arg Set argObj = WScript.Arguments strCmdLineOptions = "[server:s:1;user:u:1;password:p:1];enapp::1;listapp::0;adddep::n;" &_ "rmdep::n;enext::1;disext::n;listext::0;enfile::1;disfile::1;addfile::5;" &_ "rmfile::1;listfile::0" Set oError = oScriptHelper.ParseCmdLineOptions(strCmdLineOptions) If Not oError Is Nothing Then If oError.ErrorCode = oScriptHelper.ERROR_NOT_ENOUGH_ARGS Then ' Not enough arguments for a specified switch WScript.Echo L_NotEnoughParams_ErrorMessage WScript.Echo L_SeeHelp_Message Else ' Invalid switch oCmdLib.vbPrintf L_InvalidSwitch_ErrorMessage, Array(oError.SwitchName) WScript.Echo L_SeeHelp_Message End If WScript.Quit(ERR_GENERAL_FAILURE) End If If oScriptHelper.GlobalHelpRequested Then DisplayHelpMessage WScript.Quit(ERR_OK) End If For Each arg In oScriptHelper.Switches Select Case arg Case "server" ' Server information strServer = oScriptHelper.GetSwitch(arg) Case "user" ' User information strUser = oScriptHelper.GetSwitch(arg) Case "password" ' Password information strPassword = oScriptHelper.GetSwitch(arg) Case "enapp" If (intOperation <> 0) Then WScript.Echo L_OnlyOneOper_ErrorMessage WScript.Echo L_SeeHelp_Message WScript.Quit(ERR_GENERAL_FAILURE) End If intOperation = OPER_ENAPP If oScriptHelper.IsHelpRequested(arg) Then ' display enapp specific help End If strAppName = oScriptHelper.GetSwitch(arg) Case "adddep" If (intOperation <> 0) Then WScript.Echo L_OnlyOneOper_ErrorMessage WScript.Echo L_SeeHelp_Message WScript.Quit(ERR_GENERAL_FAILURE) End If intOperation = OPER_ADDDP If oScriptHelper.IsHelpRequested(arg) Then ' display enapp specific help End If aArgs = oScriptHelper.GetSwitch(arg) If UBound(aArgs) = -1 Then WScript.Echo L_NotEnoughParams_ErrorMessage WScript.Echo L_SeeHelp_Message WScript.Quit(ERR_GENERAL_FAILURE) End If Case "rmdep" If (intOperation <> 0) Then WScript.Echo L_OnlyOneOper_ErrorMessage WScript.Echo L_SeeHelp_Message WScript.Quit(ERR_GENERAL_FAILURE) End If intOperation = OPER_REMDP If oScriptHelper.IsHelpRequested(arg) Then ' display enapp specific help End If aArgs = oScriptHelper.GetSwitch(arg) If UBound(aArgs) = -1 Then WScript.Echo L_NotEnoughParams_ErrorMessage WScript.Echo L_SeeHelp_Message WScript.Quit(ERR_GENERAL_FAILURE) End If Case "enext" If (intOperation <> 0) Then WScript.Echo L_OnlyOneOper_ErrorMessage WScript.Echo L_SeeHelp_Message WScript.Quit(ERR_GENERAL_FAILURE) End If intOperation = OPER_ENEXT If oScriptHelper.IsHelpRequested(arg) Then ' display enapp specific help End If strAppName = oScriptHelper.GetSwitch(arg) Case "disfile" If (intOperation <> 0) Then WScript.Echo L_OnlyOneOper_ErrorMessage WScript.Echo L_SeeHelp_Message WScript.Quit(ERR_GENERAL_FAILURE) End If intOperation = OPER_DSEFI If oScriptHelper.IsHelpRequested(arg) Then ' display enapp specific help End If strAppName = oScriptHelper.GetSwitch(arg) Case "enfile" If (intOperation <> 0) Then WScript.Echo L_OnlyOneOper_ErrorMessage WScript.Echo L_SeeHelp_Message WScript.Quit(ERR_GENERAL_FAILURE) End If intOperation = OPER_ENEFI If oScriptHelper.IsHelpRequested(arg) Then ' display enapp specific help End If strAppName = oScriptHelper.GetSwitch(arg) Case "disext" If (intOperation <> 0) Then WScript.Echo L_OnlyOneOper_ErrorMessage WScript.Echo L_SeeHelp_Message WScript.Quit(ERR_GENERAL_FAILURE) End If intOperation = OPER_DSEXT If oScriptHelper.IsHelpRequested(arg) Then ' display enapp specific help End If aArgs = oScriptHelper.GetSwitch(arg) Case "addfile" If (intOperation <> 0) Then WScript.Echo L_OnlyOneOper_ErrorMessage WScript.Echo L_SeeHelp_Message WScript.Quit(ERR_GENERAL_FAILURE) End If intOperation = OPER_ADEFI If oScriptHelper.IsHelpRequested(arg) Then ' display addfile specific help DisplayAddFileHelp WScript.Quit(ERR_OK) End If aArgs = oScriptHelper.GetSwitch(arg) Case "rmfile" If (intOperation <> 0) Then WScript.Echo L_OnlyOneOper_ErrorMessage WScript.Echo L_SeeHelp_Message WScript.Quit(ERR_GENERAL_FAILURE) End If intOperation = OPER_RMEFI If oScriptHelper.IsHelpRequested(arg) Then ' display enapp specific help End If strAppName = oScriptHelper.GetSwitch(arg) Case "listapp" If (intOperation <> 0) Then WScript.Echo L_OnlyOneOper_ErrorMessage WScript.Echo L_SeeHelp_Message WScript.Quit(ERR_GENERAL_FAILURE) End If intOperation = OPER_LSAPP If oScriptHelper.IsHelpRequested(arg) Then ' display enapp specific help End If Case "listext" If (intOperation <> 0) Then WScript.Echo L_OnlyOneOper_ErrorMessage WScript.Echo L_SeeHelp_Message WScript.Quit(ERR_GENERAL_FAILURE) End If intOperation = OPER_LSEXT If oScriptHelper.IsHelpRequested(arg) Then ' display enapp specific help End If Case "listfile" If (intOperation <> 0) Then WScript.Echo L_OnlyOneOper_ErrorMessage WScript.Echo L_SeeHelp_Message WScript.Quit(ERR_GENERAL_FAILURE) End If intOperation = OPER_LSEFI If oScriptHelper.IsHelpRequested(arg) Then ' display enapp specific help End If End Select Next ' Check Parameters If intOperation = 0 Then WScript.Echo L_SeeHelp_Message WScript.Quit(ERR_GENERAL_FAILURE) End If ' Check if /p is specified but /u isn't. In this case, we should bail out with an error If oScriptHelper.Switches.Exists("password") And Not oScriptHelper.Switches.Exists("user") Then WScript.Echo L_PassWithoutUser_ErrorMessage WScript.Quit(ERR_GENERAL_FAILURE) End If ' Check if /u is specified but /p isn't. In this case, we should ask for a password If oScriptHelper.Switches.Exists("user") And Not oScriptHelper.Switches.Exists("password") Then strPassword = oCmdLib.GetPassword End If ' Initializes authentication with remote machine intResult = oScriptHelper.InitAuthentication(strServer, strUser, strPassword) If intResult <> 0 Then WScript.Quit(intResult) End If ' Choose operation Select Case intOperation Case OPER_ENAPP intResult = ChApp(strAppName, intOperation) If intResult=0 Then WScript.Echo(L_EnAppComplete_Message) End If Case OPER_ADDDP intResult = ChDep(aArgs, intOperation) If intResult=0 Then WScript.Echo(L_AddDpComplete_Message) End If Case OPER_REMDP intResult = ChDep(aArgs, intOperation) If intResult=0 Then WScript.Echo(L_RemDpComplete_Message) End If Case OPER_ENEXT intResult = ChApp(strAppName, intOperation) If intResult=0 Then WScript.Echo(L_EnExtComplete_Message) End If Case OPER_ENEFI intResult = ChApp(strAppName, intOperation) If intResult=0 Then WScript.Echo(L_EnEfiComplete_Message) End If Case OPER_DSEFI intResult = ChApp(strAppName, intOperation) If intResult=0 Then WScript.Echo(L_DsEfiComplete_Message) End If Case OPER_DSEXT intResult = DsExt(aArgs) If intResult=0 Then WScript.Echo(L_DsExtComplete_Message) End If Case OPER_ADEFI intResult = ChDep(aArgs, intOperation) If intResult=0 Then WScript.Echo(L_AdEFiComplete_Message) End If Case OPER_RMEFI intResult = RmEfi(strAppName) If intResult=0 Then WScript.Echo(L_RmEFiComplete_Message) End If Case OPER_LSAPP intResult = ShowList(intOperation) Case OPER_LSEXT intResult = ShowList(intOperation) Case OPER_LSEFI intResult = ShowListFile() End Select ' Return value to command processor WScript.Quit(intResult) ''''''''''''''''''''''''' ' End Of Main Block ''''''''''''''''''''' ''''''''''''''''''''''''''' ' DisplayHelpMessage ''''''''''''''''''''''''''' Sub DisplayHelpMessage() WScript.Echo L_Help_HELP_General01_Text WScript.Echo L_Empty_Text WScript.Echo L_Help_HELP_General02_Text WScript.Echo L_Help_HELP_General02a_Text WScript.Echo L_Help_HELP_General03_Text WScript.Echo L_Help_HELP_General04_Text WScript.Echo L_Empty_Text WScript.Echo L_Help_HELP_General05_Text WScript.Echo L_Empty_Text WScript.Echo L_Help_HELP_General06_Text WScript.Echo L_Help_HELP_General06a_Text WScript.Echo L_Help_HELP_General06b_Text WScript.Echo L_Help_HELP_General06c_Text WScript.Echo L_Help_HELP_General06d_Text WScript.Echo L_Help_HELP_General06e_Text WScript.Echo L_Help_HELP_General07_Text WScript.Echo L_Help_HELP_General07a_Text WScript.Echo L_Help_HELP_General08_Text WScript.Echo L_Help_HELP_General08a_Text WScript.Echo L_Help_HELP_General09_Text WScript.Echo L_Help_HELP_General09a_Text WScript.Echo L_Help_HELP_General09b_Text WScript.Echo L_Help_HELP_General09c_Text WScript.Echo L_Help_HELP_General09d_Text WScript.Echo L_Help_HELP_General10_Text WScript.Echo L_Help_HELP_General10a_Text WScript.Echo L_Help_HELP_General10b_Text WScript.Echo L_Help_HELP_General10c_Text WScript.Echo L_Help_HELP_General10d_Text WScript.Echo L_Help_HELP_General11_Text WScript.Echo L_Help_HELP_General11a_Text WScript.Echo L_Help_HELP_General11b_Text WScript.Echo L_Help_HELP_General12_Text WScript.Echo L_Help_HELP_General12a_Text WScript.Echo L_Help_HELP_General12b_Text WScript.Echo L_Help_HELP_General13_Text WScript.Echo L_Help_HELP_General13a_Text WScript.Echo L_Help_HELP_General14_Text WScript.Echo L_Help_HELP_General14a_Text WScript.Echo L_Help_HELP_General15_Text WScript.Echo L_Help_HELP_General15a_Text WScript.Echo L_Help_HELP_General16_Text WScript.Echo L_Help_HELP_General16a_Text WScript.Echo L_Help_HELP_General17_Text WScript.Echo L_Help_HELP_General17a_Text WScript.Echo L_Help_HELP_General18_Text WScript.Echo L_Help_HELP_General19_Text End Sub ''''''''''''''''''''''''''' ' DisplayHelpMessage ''''''''''''''''''''''''''' Sub DisplayAddFileHelp() WScript.Echo L_Help_HELP_AddFile01_Text WScript.Echo L_Empty_Text WScript.Echo L_Help_HELP_AddFile02_Text WScript.Echo L_Help_HELP_AddFile02a_Text WScript.Echo L_Help_HELP_AddFile03_Text WScript.Echo L_Empty_Text WScript.Echo L_Help_HELP_General05_Text WScript.Echo L_Empty_Text WScript.Echo L_Help_HELP_General06_Text WScript.Echo L_Help_HELP_General06a_Text WScript.Echo L_Help_HELP_General06b_Text WScript.Echo L_Help_HELP_General06c_Text WScript.Echo L_Help_HELP_General06d_Text WScript.Echo L_Help_HELP_General06e_Text WScript.Echo L_Help_HELP_AddFile07_Text WScript.Echo L_Help_HELP_AddFile08_Text WScript.Echo L_Help_HELP_AddFile09_Text WScript.Echo L_Help_HELP_AddFile09a_Text WScript.Echo L_Help_HELP_AddFile09b_Text WScript.Echo L_Help_HELP_AddFile09c_Text WScript.Echo L_Help_HELP_AddFile10_Text WScript.Echo L_Help_HELP_AddFile10a_Text WScript.Echo L_Help_HELP_AddFile11_Text WScript.Echo L_Help_HELP_AddFile11a_Text WScript.Echo L_Help_HELP_AddFile11b_Text WScript.Echo L_Help_HELP_AddFile12_Text WScript.Echo L_Help_HELP_AddFile12a_Text WScript.Echo L_Help_HELP_AddFile13_Text WScript.Echo L_Help_HELP_AddFile13a_Text WScript.Echo L_Help_HELP_AddFile14_Text WScript.Echo L_Help_HELP_AddFile14a_Text WScript.Echo L_Help_HELP_AddFile15_Text WScript.Echo L_Help_HELP_AddFile15a_Text WScript.Echo L_Help_HELP_AddFile16_Text WScript.Echo L_Help_HELP_AddFile16a_Text End Sub Function ChApp(strAppName, intOperation) Dim WebSvcObj On Error Resume Next oScriptHelper.WMIConnect If Err.Number Then WScript.Echo L_WMIConnect_ErrorMessage oCmdLib.vbPrintf L_Error_ErrorMessage, Array(Hex(Err.Number), Err.Description) ChApp = Err.Number Exit Function End If Set WebSvcObj = oScriptHelper.ProviderObj.get("IIsWebService='w3svc'") If Err.Number Then Select Case Err.Number Case &H80070005 WScript.Echo L_Admin_ErrorMessage WScript.Echo L_Adminp2_ErrorMessage Case Else WScript.Echo L_GetWebSvcObj_ErrorMessage oCmdLib.vbPrintf L_Error_ErrorMessage, Array(Hex(Err.Number), Err.Description) End Select ChApp = Err.Number Exit Function End If Select Case intOperation Case OPER_ENAPP WebSvcObj.EnableApplication strAppName Case OPER_ENEXT WebSvcObj.EnableWebServiceExtension strAppName Case OPER_ENEFI WebSvcObj.EnableExtensionFile strAppName Case OPER_DSEFI WebSvcObj.DisableExtensionFile strAppName End Select If Err.Number Then WScript.Echo L_EnApp_ErrorMessage WScript.Echo Err.Description Select Case intOperation Case OPER_ENAPP WScript.Echo L_NoApp_ErrorMessage WScript.Echo L_NoAppp2_ErrorMessage Case OPER_ENEXT WScript.Echo L_NoExt_ErrorMessage Case OPER_ENEFI WScript.Echo L_NoEfi_ErrorMessage Case OPER_DSEFI WScript.Echo L_NoEfi_ErrorMessage End Select ChApp = Err.Number Exit Function End If End Function Function RmEfi(strAppName) Dim WebSvcObj, extObj, restrictions, i, bDel bDel = False On Error Resume Next oScriptHelper.WMIConnect If Err.Number Then WScript.Echo L_WMIConnect_ErrorMessage oCmdLib.vbPrintf L_Error_ErrorMessage, Array(Hex(Err.Number), Err.Description) RmEfi = Err.Number Exit Function End If Set WebSvcObj = oScriptHelper.ProviderObj.get("IIsWebService='w3svc'") If Err.Number Then Select Case Err.Number Case &H80070005 WScript.Echo L_Admin_ErrorMessage WScript.Echo L_Adminp2_ErrorMessage Case Else WScript.Echo L_GetWebSvcObj_ErrorMessage oCmdLib.vbPrintf L_Error_ErrorMessage, Array(Hex(Err.Number), Err.Description) End Select RmEfi = Err.Number Exit Function End If Set extObj = oScriptHelper.ProviderObj.get("IIsWebServiceSetting='w3svc'") restrictions = extObj.WebSvcExtRestrictionList For i=0 to UBOUND(restrictions) If UCASE(restrictions(i).FilePath) = UCASE(strAppName) Then If restrictions(i).Deletable = 1 Then WebSvcObj.DeleteExtensionFileRecord strAppName bDel = True End If End If Next If Err.Number Then WScript.Echo L_EnApp_ErrorMessage WScript.Echo Err.Description RmEfi = Err.Number Exit Function End If If bDel = False Then WScript.Echo L_RmEfi_ErrorMessage WScript.Echo L_RmEfip2_ErrorMessage RmEfi = 1 End If End Function Function ChDep(aArgs, intOperation) Dim WebSvcObj, i On Error Resume Next oScriptHelper.WMIConnect If Err.Number Then WScript.Echo L_WMIConnect_ErrorMessage oCmdLib.vbPrintf L_Error_ErrorMessage, Array(Hex(Err.Number), Err.Description) ChDep = Err.Number Exit Function End If Set WebSvcObj = oScriptHelper.ProviderObj.get("IIsWebService='w3svc'") If Err.Number Then Select Case Err.Number Case &H80070005 WScript.Echo L_Admin_ErrorMessage WScript.Echo L_Adminp2_ErrorMessage Case Else WScript.Echo L_GetWebSvcObj_ErrorMessage oCmdLib.vbPrintf L_Error_ErrorMessage, Array(Hex(Err.Number), Err.Description) End Select ChDep = Err.Number Exit Function End If If OPER_ADEFI = intOperation Then If ((aArgs(1) <> 0) And (aArgs(1) <> 1)) Then aArgs(1) = 0 End If WebSvcObj.AddExtensionFile aArgs(0), aArgs(1), aArgs(2), aArgs(3), aArgs(4) Else If UBOUND(aArgs) < 1 Then WScript.Echo L_NotEnoughParams_ErrorMessage WScript.Echo L_SeeHelp_Message ChDep = ERR_GENERAL_FAILURE Exit Function End If For i=1 to UBOUND(aArgs) Select Case intOperation Case OPER_ADDDP WebSvcObj.AddDependency aArgs(0), aArgs(i) Case OPER_REMDP WebSvcObj.RemoveDependency aArgs(0), aArgs(i) End Select If Err.Number Then WScript.Echo L_EnDep_ErrorMessage WScript.Echo Err.Description WScript.Echo L_NoDep_ErrorMessage WScript.Echo L_NoDepp2_ErrorMessage ChDep = Err.Number Exit Function End If Next End If If Err.Number Then WScript.Echo L_EnApp_ErrorMessage WScript.Echo Err.Description ChDep = Err.Number Exit Function End If End Function Function DsExt(aArgs) Dim WebSvcObj, i On Error Resume Next oScriptHelper.WMIConnect If Err.Number Then WScript.Echo L_WMIConnect_ErrorMessage oCmdLib.vbPrintf L_Error_ErrorMessage, Array(Hex(Err.Number), Err.Description) DsExt = Err.Number Exit Function End If Set WebSvcObj = oScriptHelper.ProviderObj.get("IIsWebService='w3svc'") If Err.Number Then Select Case Err.Number Case &H80070005 WScript.Echo L_Admin_ErrorMessage WScript.Echo L_Adminp2_ErrorMessage Case Else WScript.Echo L_GetWebSvcObj_ErrorMessage oCmdLib.vbPrintf L_Error_ErrorMessage, Array(Hex(Err.Number), Err.Description) End Select DsExt = Err.Number Exit Function End If For i=0 to UBOUND(aArgs) WebSvcObj.DisableWebServiceExtension aArgs(i) If Err.Number Then WScript.Echo L_EnApp_ErrorMessage WScript.Echo Err.Description WScript.Echo L_NoExt_ErrorMessage DsExt = Err.Number Exit Function End If Next End Function Function ShowList(intOperation) Dim WebSvcObj, holder, i, mylist On Error Resume Next oScriptHelper.WMIConnect If Err.Number Then WScript.Echo L_WMIConnect_ErrorMessage oCmdLib.vbPrintf L_Error_ErrorMessage, Array(Hex(Err.Number), Err.Description) ShowList = Err.Number Exit Function End If Set WebSvcObj = oScriptHelper.ProviderObj.get("IIsWebService='w3svc'") If Err.Number Then Select Case Err.Number Case &H80070005 WScript.Echo L_Admin_ErrorMessage WScript.Echo L_Adminp2_ErrorMessage Case Else WScript.Echo L_GetWebSvcObj_ErrorMessage oCmdLib.vbPrintf L_Error_ErrorMessage, Array(Hex(Err.Number), Err.Description) End Select ShowList = Err.Number Exit Function End If Select Case intOperation Case OPER_LSAPP set holder=oScriptHelper.ProviderObj.execmethod("IIsWebService='w3svc'", "ListApplications") mylist = holder.Applications Case OPER_LSEXT set holder=oScriptHelper.ProviderObj.execmethod("IIsWebService='w3svc'", "ListWebServiceExtensions") mylist = holder.Extensions End Select If Err.Number Then WScript.Echo L_ShowList_ErrorMessage WScript.Echo L_ShowList2_ErrorMessage WScript.Echo L_ShowList3_ErrorMessage WScript.Echo Err.Description ShowList = Err.Number Exit Function End If For i = 0 to UBOUND(mylist) WScript.Echo mylist(i) Next End Function Function ShowListFile() Dim WebSvcObj, fileList, i On Error Resume Next oScriptHelper.WMIConnect If Err.Number Then WScript.Echo L_WMIConnect_ErrorMessage oCmdLib.vbPrintf L_Error_ErrorMessage, Array(Hex(Err.Number), Err.Description) ShowList = Err.Number Exit Function End If Set WebSvcObj = oScriptHelper.ProviderObj.get("IIsWebServiceSetting='w3svc'") If Err.Number Then Select Case Err.Number Case &H80070005 WScript.Echo L_Admin_ErrorMessage WScript.Echo L_Adminp2_ErrorMessage Case Else WScript.Echo L_GetWebSvcObj_ErrorMessage oCmdLib.vbPrintf L_Error_ErrorMessage, Array(Hex(Err.Number), Err.Description) End Select ShowList = Err.Number Exit Function End If fileList = WebSvcObj.WebSvcExtRestrictionList If Err.Number Then WScript.Echo L_ShowList_ErrorMessage WScript.Echo L_ShowList2_ErrorMessage WScript.Echo L_ShowList3_ErrorMessage WScript.Echo Err.Description ShowList = Err.Number Exit Function End If WScript.Echo L_Empty_Text WScript.Echo L_ShowListFile_Message WScript.Echo L_ShowListFile2_Message For i = 0 to UBOUND(fileList) WScript.Echo fileList(i).Access & " " & fileList(i).FilePath Next End Function