erreur 0x80040154

Le
gimoka
Salut,
Je voulais faire une restauration mais elle n'est pas possible !
Une fenêtre s'ouvre et dit:
"Une erreur inattendue s'est produite.
Classe non enregistrée(0x80040154)"

Que signifie cette erreur?
Merci@+
JR
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Claude BELLAMY
Le #20328941
"gimoka" :

Je voulais faire une restauration mais elle n'est pas possible !
Une fenêtre s'ouvre et dit:
"Une erreur inattendue s'est produite.
Classe non enregistrée(0x80040154)"

Que signifie cette erreur?



Quelque chose facilitant particulièrement le transit intestinal! ;-)

Cela signifie qu'un composant COM utilisé par l'application concernée n'a
pas été enregistré dans la BDR.

Un tel composant n'est rien d'autre qu'une DLL, un peu spéciale car elle se
doit d'avoir quelques fonctions aux noms normalisés ("dllRegisterServer",
...), et qui doit avoir été enregistré dans la BDR à l'aide de REGSVR32.EXE
P.ex.
regsvr32 shell32.dll
regsvr32 capicom.dll
...
regsvr32 lit alors certaines données présentes dans le fichier dll, et crée
des clefs en conséquence dont la 1ère est un CLSID (CLasS IDentifier).

P.ex. l'enregistrement de "capicom.dll" (utilisée pour la gestion des
certificats et clefs privées) provoque la création de l'arborescence
HKEY_CLASSES_ROOTCLSID{03ACC284-B757-4B8F-9951-86E600D2CD06}

"{03ACC284-B757-4B8F-9951-86E600D2CD06}" est l'identifiant UNIQUE et
UNIVERSEL de ce composant.

Si un programme en a besoin, c'est par ce CLSID qu'il l'appellera.
Si le composant a bien été enregistré (par regsvr32), on pourra retrouver le
nom du fichier le contenant grâce à la clef
HKCRCLSID{03ACC284-B757-4B8F-9951-86E600D2CD06}InprocServer32
(p.ex., chez moi, la valeur par défait est
"D:DelphiSuperExecCAPICom.dll")

L'intérêt de ce système est que le fichier correspondant peut être n'importe
où, avec n'importe quel nom (cela peut différer suivant les machines).
Ce qui compte, c'est uniquement le CLSID.

Donc, pour en revenir au problème actuel, l'outil de restauration (je pense
que tu veux parler de %systemroot%system32rstrui.exe) a besoin d'un
composant, mais il ne l'a pas trouvé :
- soit parce qu'il n'a jamais été enregistré
(mais çà m'étonnerait car rstrui est un outil système,
installé avec Windows)
- soit parce qu'il a été flingué par erreur.


Reste à savoir à présent quel est le composant en question.
Il faudrait que tu examines les journaux dans l'observateur d'événements.

En analysant le binaire de rstrui.exe, j'ai vu qu'il faisait appel à au
moins 2 composants :

%systemroot%system32spp.dll
(Microsoft® Windows Shared Protection Point Library)
Clef :
HKCRCLSID{4B966436-6781-4906-8035-9AF94B32C3F7}


%systemroot%system32srcore.dll
(Microsoft® Windows System Restore Core Library)
Clef :
HKCRCLSID{883FF1FC-09E1-48e5-8E54-E2469ACB0CFD}

Donc vérifie aussi l'existence de ces 2 DLL et réenregistre les :
regsvr32 %systemroot%system32spp.dll
regsvr32 %systemroot%system32srcore.dll


NB: si une dll est déjà correctement enregistrée, cela ne cause aucun
problème de la réenregistrer.


PS: Il est possible qu'il y ait d'autres composants ...

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr
JR
Le #20335121
Merci mais d'autres programmes refusent aussi de se lancer pour la même
raison!
Certainement à cause de ce mélange entre "Administrateur" et "utilisateur"
cité le 11/10 -127H ?
@+

"Jean-Claude BELLAMY" message de groupe de discussion :


"gimoka" discussion :

Je voulais faire une restauration mais elle n'est pas possible !
Une fenêtre s'ouvre et dit:
"Une erreur inattendue s'est produite.
Classe non enregistrée(0x80040154)"

Que signifie cette erreur?



Quelque chose facilitant particulièrement le transit intestinal! ;-)

Cela signifie qu'un composant COM utilisé par l'application concernée n'a
pas été enregistré dans la BDR.

Un tel composant n'est rien d'autre qu'une DLL, un peu spéciale car elle
se doit d'avoir quelques fonctions aux noms normalisés
("dllRegisterServer", ...), et qui doit avoir été enregistré dans la BDR à
l'aide de REGSVR32.EXE
P.ex.
regsvr32 shell32.dll
regsvr32 capicom.dll
...
regsvr32 lit alors certaines données présentes dans le fichier dll, et
crée des clefs en conséquence dont la 1ère est un CLSID (CLasS
IDentifier).

P.ex. l'enregistrement de "capicom.dll" (utilisée pour la gestion des
certificats et clefs privées) provoque la création de l'arborescence
HKEY_CLASSES_ROOTCLSID{03ACC284-B757-4B8F-9951-86E600D2CD06}

"{03ACC284-B757-4B8F-9951-86E600D2CD06}" est l'identifiant UNIQUE et
UNIVERSEL de ce composant.

Si un programme en a besoin, c'est par ce CLSID qu'il l'appellera.
Si le composant a bien été enregistré (par regsvr32), on pourra retrouver
le nom du fichier le contenant grâce à la clef
HKCRCLSID{03ACC284-B757-4B8F-9951-86E600D2CD06}InprocServer32
(p.ex., chez moi, la valeur par défait est
"D:DelphiSuperExecCAPICom.dll")

L'intérêt de ce système est que le fichier correspondant peut être
n'importe où, avec n'importe quel nom (cela peut différer suivant les
machines).
Ce qui compte, c'est uniquement le CLSID.

Donc, pour en revenir au problème actuel, l'outil de restauration (je
pense que tu veux parler de %systemroot%system32rstrui.exe) a besoin
d'un composant, mais il ne l'a pas trouvé :
- soit parce qu'il n'a jamais été enregistré
(mais çà m'étonnerait car rstrui est un outil système,
installé avec Windows)
- soit parce qu'il a été flingué par erreur.


Reste à savoir à présent quel est le composant en question.
Il faudrait que tu examines les journaux dans l'observateur d'événements.

En analysant le binaire de rstrui.exe, j'ai vu qu'il faisait appel à au
moins 2 composants :

%systemroot%system32spp.dll
(Microsoft® Windows Shared Protection Point Library)
Clef :
HKCRCLSID{4B966436-6781-4906-8035-9AF94B32C3F7}


%systemroot%system32srcore.dll
(Microsoft® Windows System Restore Core Library)
Clef :
HKCRCLSID{883FF1FC-09E1-48e5-8E54-E2469ACB0CFD}

Donc vérifie aussi l'existence de ces 2 DLL et réenregistre les :
regsvr32 %systemroot%system32spp.dll
regsvr32 %systemroot%system32srcore.dll


NB: si une dll est déjà correctement enregistrée, cela ne cause aucun
problème de la réenregistrer.


PS: Il est possible qu'il y ait d'autres composants ...

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr




Publicité
Poster une réponse
Anonyme