Menu Content/Inhalt
Accueil arrow Outils arrow Win32 GUI arrow RegSvr32PerUser

Syndication

Abonnez-vous à ce fil RSS pour être tenu informé des nouveautés de ce site.

RegSvr32PerUser Convertir en PDF Version imprimable Suggérer par mail
Écrit par Gilles LAURENT   
10-07-2008

RegSvr32PerUser - Enregistrement d'un composant COM

L'outil natif RegSvr32.exe disponible sur les plateformes Microsoft Windows permet d'enregistrer ou de supprimer l'enregistrement des composants COM tels que les fichiers de type .DLL et .OCX. Cet outil charge tout d'abord le composant en mémoire puis invoque les fonctions exportées DllRegisterServer pour l'enregistrement du composant et DllUnregisterServer pour la suppression de l'enregistrement. Les informations d'enregistrement du composant sont écrites dans le registre dans la ruche HKCR, alias de HKLM\SOFTWARE\Classes. Donc pour être en mesure d'enregistrer un composant, il est nécessaire de posséder le droit d'écriture dans cette ruche, ce qui est par défaut la cas des Administrateurs locaux de la machine et non des utilisateurs standards.

L'outil RegSvr32PerUser.exe permet de contourner cette limitation en autorisant un utilisateur standard à enregistrer un composant COM. Ceci peut être particulièrement utile dans les environnements sécurisés dans lesquels les utilisateurs des postes de travail ne possèdent pas les droits nécessaires pour l'accès en écriture au registre HKCR. La technique utilisée consiste à rediriger la ruche HKCR vers la ruche HKCU\SOFTWARE\Classes avant l'enregistrement ou avant la suppression de l'enregistrement du composant.

Historique:
Version 1.0.0.1 - 20080710 - Première Release Publique

Plateformes supportées:
Windows 2000/XP/2003/2008/Vista SP1

Usage:
RegSvr32PerUser -com [path\]dllname [-unregister] [-silent]

Aide en ligne:
RegSvr32PerUser v1.0.0.1 (c) 2008 Gilles LAURENT
[Un]registers per user COM server files that are self-registerable
Usage : RegSvr32PerUser -com [path\]dllname [-unregister] [-silent]
Commands :
-com                  Name of COM server
-unregister          Unregister COM server, default to register
-silent                Display no message boxes

Note aux utilisateurs de Windows Vista:
Un problème dans Windows Vista concernant l'enregistrement des librairies de types peut provoquer le message d'erreur "Accès refusé". Une fiche technique sur l'explication du problème et son correctif est maintenant disponible ici. Ce problème est corrigé depuis Windows Vista Service Pack 1. La définition de la variable d'environnement OAPERUSERTLIBREG n'est pas nécessaire car l'outil RegSvr32PerUser.exe essayera tout d'abord d'appeler la fonction exportée OaEnablePerUserTLibRegistration si celle-ci est disponible dans la librairie Oleaut32.dll.

Téléchargement:
Guide PDF: -
Archive: RegSvr32PerUser.zip

Ci-dessous un exemple VBScript d'utilisation de l'outil RegSvr32PerUser.exe pour enregistrer le composant COM DynaWrap sous l'autorité d'un utilisateur standard. Les commandes VBScript sont exécutées en ligne de commandes avec la console WSH Shell :

                                                                                
WSH D:\Test> ' tentative d'instanciation du composant DynaWrap                  
WSH D:\Test> Set oDyn=co("DynamicWrapper")                                      
:: An error occured (429)                                                       
:: Un composant ActiveX ne peut pas créer un objet.                             
                                                                                
WSH D:\Test> ' le composant n'est pas enregistré                                
WSH D:\Test> ' tentative d'enregistrement du composant pour l'utilisateur       
WSH D:\Test> @RegSvr32PerUser.exe -com DynaWrap.dll -silent                     
                                                                                
WSH D:\Test> ' le composant est maintenant enregistré et disponible             
WSH D:\Test> ' nouvelle tentative d'instanciation du composant DynaWrap         
WSH D:\Test> Set oDyn=co("DynamicWrapper")                                      
WSH D:\Test>                                                                    
WSH D:\Test> ' le composant DynaWrap est bien disponible                        
WSH D:\Test> ' détermination des droits de l'utilisateur courant                
WSH D:\Test> ' utilisation de l'API IsNTAdmin disponible dans advpack.dll       
WSH D:\Test> oDyn.Register "advpack.dll", "IsNTAdmin", "r=b", "i=ll"            
WSH D:\Test>                                                                    
WSH D:\Test> ' l'api renvoie Vrai si l'utilisateur est administrateur           
WSH D:\Test> echo CStr (oDyn.IsNTAdmin (0,0))                                   
Faux                                                                            
WSH D:\Test> ' l'utilisateur courant n'est pas administrateur                   
WSH D:\Test> ' suppression de l'enregistrement du composant DynaWrap            
WSH D:\Test> @RegSvr32PerUser.exe -com DynaWrap.dll -unregister -silent         
                                                                                
WSH D:\Test> ' vérification de la suppression de l'enregistrement du composant  
WSH D:\Test> ' pour cela on tente une nouvelle instanciation                    
WSH D:\Test> Set oDyn=co("DynamicWrapper")                                      
:: An error occured (429)                                                       
:: Un composant ActiveX ne peut pas créer un objet.                             

 
< Précédent   Suivant >