OVH Cloud OVH Cloud

Com+, service de composants

2 réponses
Avatar
Ambassadeur Kosh
Bonjour à tous

pardonnez moi par avance si ce post est limite ici. j'ai du mal de trouver
un news group adequat pour COM et ASP.

on a une bibliotheque d'objets COM (ecrits en VB6), qui doit etre
enregistrée dans le gestionnaire de composants pout faire fonctionner le
site internet que nous developpons, puisque nos pages asp s'appuie sur ces
objets.

je cherche à réaliser cette opération à partir d'un script ou d'un
automatisme, plutot que de façon manuelle (ça commence à etre lourd de faire
ça toute les 20 minutes quand on developpe les objets)

les opérations dont j'ai besoin sont : virer des objets registrés, registrer
des objets, ou plutot une dll précise, et specifier pour certains objets
leur chaine de construction (genre pour passer le nom d'un fichier
specifiant la base par exemple)

comment fait on cela ?

d'avance merci pour toute l'aide que vous pourrez m'apporter.

2 réponses

Avatar
Simon Mourier [SoftFluent]
Tout d'abord, il faut savoir qu'il n'est pas obligatoire d'enregistrer ses
composants COM dans le gestionnaire de composants. Un bon petit regsvr32
<my>.dll peut suffire.
Bon, il est vrai le gestionnaire de composants peut rendre un certain nombre
de service (euh ben oui heureusement) et la première chose à déterminer
absolument, c'est savoir si on veut un activation en mode Librairie (in
process) ou Serveur (out of process) (onglet Activation dans les propriétés
du package). Si on veut une activation Librairie, il y a de fortes chances
pour que le regsvr32 suffise. L'activation out of process peut être pratique
justement quand on développe parce qu'on a pas besoin de redémarrer son
process, on redémarre le process hébergeant.

Bien. Ceci étant dit, à part ces considérations générales, pour manipuler le
catalogue COM+, il faut utiliser un objet COM (sans blague!). Voici un petit
VBScript qui liste les applications COM+ déclarées sur la machine. Pour
modifier les propriétés des applications, il faut faire des trucs du genre:

myApp.value("Identity")="SOFTFLUENTadministrator"
myApp.value("Password")="MotDePasseEnClairCestPasMalin!"
et
apps.SaveChanges

attention, le nom des propriétés est sensible à la casse.
Pour la chaîne de construction, c'est une une propriété des composants (donc
une sous collection de l'application), qui s'apelle ConstructorString. cf
ici
http://msdn.microsoft.com/library/en-us/cossdk/html/f502ba60-b2b1-4556-8f91-22a474e60e0d.asp?frame=true#_cos_components_constructorstring

Pour créer des applications, y mettre des composants, faire un shutdown de
l'application hébergeante (en général un dllhost.exe), détruire les
applications, etc... il faut utiliser les méthodes sur l'objet Catalog
(InstallApplication, InstallComponent, etc...)

En C#, c'est la même chose, il faut référencer
%windir%system32comadmin.dll et peut-être aussi
%windir%system32comsvcs.dll (je ne sais plus), et faire de l'Interop.

Simon.
www.softfluent.com

Set WshShell = WScript.CreateObject("WScript.Shell")
server = WshShell.Environment("PROCESS")("COMPUTERNAME")

set catalog = createobject("COMAdmin.COMAdminCatalog")
output "Catalog version " & catalog.majorversion & "." &
catalog.minorversion

catalog.connect server
set apps = catalog.GetCollection("Applications")
apps.populate
output "Nombre d'applications COM+=" & apps.count
for each app in apps
DumpAppProperties app
next

Sub DumpAppProperties(app)
Output "Propriétés de " & app.name & ":"
Output chr(9) & "ApplicationAccessChecksEnabled=" &
app.value("ApplicationAccessChecksEnabled")
Output chr(9) & "Activation=" & app.value("Activation") & " (" &
Get_Activation(app.value("Activation")) & ")"
Output chr(9) & "AccessChecksLevel=" & app.value("AccessChecksLevel") & "
(" & Get_AccessChecksLevel(app.value("AccessChecksLevel")) & ")"
Output chr(9) & "Authentication=" & app.value("Authentication") & " (" &
Get_Authentication(app.value("Authentication")) & ")"
Output chr(9) & "AuthenticationCapability=" &
app.value("AuthenticationCapability") & " (" &
Get_AuthenticationCapability(app.value("AuthenticationCapability")) & ")"
Output chr(9) & "CommandLine='" & app.value("CommandLine") & "'"
Output chr(9) & "CreatedBy='" & app.value("CreatedBy") & "'"
Output chr(9) & "CRMEnabled=" & app.value("CRMEnabled")
Output chr(9) & "CRMLogFile='" & app.value("CRMLogFile") & "'"
Output chr(9) & "Description=" & app.value("Description")
Output chr(9) & "ID=" & app.value("ID")
Output chr(9) & "Identity='" & app.value("Identity") & "'"
Output chr(9) & "ImpersonationLevel=" & app.value("ImpersonationLevel") & "
(" & Get_ImpersonationLevel(app.value("ImpersonationLevel")) & ")"
Output chr(9) & "ShutdownAfter=" & app.value("ShutdownAfter") & " minutes"
End Sub

Function Get_Activation(l)
Dim s
select case l
case 0 s = "Inproc"
case 1 s = "Local"
case else s = "(?)"
End select
Get_Activation = s
End Function

Function Get_AccessChecksLevel(l)
Dim s
select case l
case 0 s = "ApplicationLevel"
case 1 s = "ApplicationComponentLevel"
case else s = "(?)"
End select
Get_AccessChecksLevel = s
End Function

Function Get_ImpersonationLevel(l)
Dim s
select case l
case 1 s = "Anonymous"
case 2 s = "Identify"
case 3 s = "Impersonate"
case 4 s = "Delegate"
case else s = "(?)"
End select
Get_ImpersonationLevel = s
End Function

Function Get_Authentication(l)
Dim s
select case l
case 0 s = "Default"
case 1 s = "None"
case 2 s = "Connect"
case 3 s = "Call"
case 4 s = "Packet"
case 5 s = "Integrity"
case 6 s = "Privacy"
case else s = "(?)"
End select
Get_Authentication = s
End Function

Function Get_AuthenticationCapability(l)
Dim s
Dim sep
s = ""
sep = ""
if (32 and l) then s = s & sep & "StaticCloaking"
if s <> "" then sep=", "
if (64 and l) then s = s & sep & "DynamicCloaking"
if s <> "" then sep=", "
if (2 and l) then s = s & sep & "SecureReference"
if s = "" then s="None"
Get_AuthenticationCapability = s
End Function

Sub Output(t)
wscript.echo t
End Sub

"Ambassadeur Kosh" a écrit dans le message de
news: %
Bonjour à tous

pardonnez moi par avance si ce post est limite ici. j'ai du mal de trouver
un news group adequat pour COM et ASP.

on a une bibliotheque d'objets COM (ecrits en VB6), qui doit etre
enregistrée dans le gestionnaire de composants pout faire fonctionner le
site internet que nous developpons, puisque nos pages asp s'appuie sur ces
objets.

je cherche à réaliser cette opération à partir d'un script ou d'un
automatisme, plutot que de façon manuelle (ça commence à etre lourd de
faire ça toute les 20 minutes quand on developpe les objets)

les opérations dont j'ai besoin sont : virer des objets registrés,
registrer des objets, ou plutot une dll précise, et specifier pour
certains objets leur chaine de construction (genre pour passer le nom d'un
fichier specifiant la base par exemple)

comment fait on cela ?

d'avance merci pour toute l'aide que vous pourrez m'apporter.





Avatar
Ambassadeur Kosh
carrement pratique.

merci beaucoup Simon.