Voici un petit script bien pratique qui permet de tester l'existence ou non d'un composant sur un serveur IIS.
Il est tiré d'un exemple pris sur le défunt site Nautilum.com
PRINCIPE DU CODE
Il est en fait très simple, le tout consiste à essayer de créer une instance d'un composant, et de récupérer l'erreur si elle y est.
L'astuce, c'est donc le
<%on error resume next%>
qui permet de ne pas stopper le code dès la première erreur.
La récupération de l'erreur se fait à cet endroit :
<% Set xTestObj = Server.CreateObject(nom_objet) ' création d'une instance de l'objet If Err=0 Then ' pas d'erreur objet_installe = True end if %>
Par défaut, une liste de composants à tester existe, mais il est possible d'en essayer d'autres en saisissant leurs noms.
CODE COMPLET
lister_les_composants.asp
<% Option Explicit %>
<%
' COMPOSANTS PRESENTS PAR DEFAUT DANS IIS ' cette liste est non exaustive et modifiable dim liste_objets(8)
function objet_installe(nom_objet) ' FONCTION DE TEST ' ENTREE : nom d'un composant ' SORTIE : vrai ou faux
On Error Resume Next ' pour récupérer le code d'erreur
' initialisation objet_installe = False Err = 0
dim xTestObj Set xTestObj = Server.CreateObject(nom_objet) ' création d'une instance de l'objet If Err=0 Then ' pas d'erreur objet_installe = True end if Set xTestObj = Nothing Err = 0 End Function %>
<html> <head> <title>Tester la présence d'un composant</title> </head> <body>
<!-- formulaire pour la saisie d'un nom de composant --> <form action="<%=request.ServerVariables("SCRIPT_NAME")%>" method="post"> <input type="text" value="" name="nom_objet" size="40"> <input type="submit" value="Tester"> <input type="reset" value="Annuler"> </form>
<% Dim nom_objet nom_objet = trim(request.form("nom_objet")) ' récupération du nom du composant à tester
if nom_objet<>"" then ' test d'un composant en particulier dont le nom a été saisi
If not(objet_installe(nom_objet)) then%> <b><%=nom_objet%></b> -> pas installé<br> <%else%> <b><%=nom_objet%></b> -> installé<br> <%end if else ' test des composants de la liste par défaut
dim i for i=0 to UBound(liste_objets) ' parcours de la liste if not(objet_installe(liste_objets(i))) then%> <b><%=liste_objets(i)%></b> -> pas installé<br> <%else%> <b><%=liste_objets(i)%></b> -> installé<br> <%end if next end if%>