c # - COM-fabriksfejl 80040154, når du åbner dialogen Dialog

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg ved, at den normale årsag til dette problem er relateret til den platform, som en komponent er kompileret til, og jeg har haft problemet tidligere. Men dette er en rapport fra en enkelt bruger og opstår når han forsøger at åbne enten en dialog for at vælge en fil eller en mappe. Jeg bruger ikke nogen fancy komponenter her bare standard et. De relevante linjer i en af ​​stakkesporerne er:



  Henter COM-klassen fabrik for komponent med CLSID
  {DC1C5A9C-E88A-4DDE-A5A1-60F82A20AEF7} mislykkedes på grund af følgende
  fejl: 80040154. på
  System.Windows.Forms.OpenFileDialog.CreateVistaDialog () på
  System.Windows.Forms.FileDialog.RunDialogVista (IntPtr hWndOwner) på
  System.Windows.Forms.FileDialog.RunDialog (IntPtr hWndOwner) på
  System.Windows.Forms.CommonDialog.ShowDialog (IWin32Window ejer) på
  System.Windows.Forms.CommonDialog.ShowDialog () på
  ScruffyDuck.AirportDesignEditor.MainForm.getOpenFileInfo (String
  initialkatalog, strengfilter)



Jeg søgte min registreringsdatabase for denne CLSID og kom op med



  \% SystemRoot\% \ System32 \ comdlg32.dll



Det er ikke en overraskelse, jeg formoder. Jeg antager, da der er mange andre brugere derude der ikke har dette problem, der skal relateres til brugerens opsætning. Jeg vil sætte pris på nogen ideer om hvordan man rådgiver ham i denne sag.


Mange tak

Bedste reference


Jeg gætter bare nu, da dette ikke er noget programmeringsspørgsmål, så lad mig ikke, hvis jeg ikke kunne hjælpe med at give nogle ideer ...: P


Problemet her er, at systemet ikke kan gøre COM-objekt ud af COM-klassen, der er angivet af CLSID. Dette kan ske af mange grunde:



  • Bibliotek comdlg32.dll er ikke registreret, prøv at registrere det med regsvr32 comdlg32.dll

  • Systemaccont har ikke fuld kontrol (tilladelse) over registreringsdatabasenøglen, der indeholder CLSID {DC1C5A9C-E88A-4DDE-A5A1-60F82A20AEF7}. Du kan kontrollere det ved at navigere (eller søge registreringsdatabasen) til den pågældende tast, højreklikke på den og ved at vælge Permissions... giver SYSTEM-kontoen fuld kontrol over det.

  • Prøv også ovenstående for administratorkontoen.

  • Bibliotek comdlg32.dll er beskadiget. Dette kan ske, hvis spyware eller noget andet ondsindet program forsøgte at koble sig til dialogboksen Åbn fil eller Gennemse kataloger, og det har ændret lib'en. I så fald skal du geninstallere lib ... eller windows. For at kontrollere er lib ok, lav MD5 hash deraf og sammenlign med MD5 hash af lib på et arbejdssystem. De skal være identiske.



Nå, håber jeg hjalp. :)