windows - Sådan registreres et COM-objekt til alle brugere

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger regsvr32 MyCOM.dll til at registrere min com-objekt til min ansøgning. Dette virker fint under min administratorkonto. hvis en skifter brugeren til en ikke-administrator, fejler programmet. Det ser ud til, at COM-objektet ikke er indlæst til den ikke-admin-bruger. Eventuelle ideer om hvorfor dette kan være eller en mulig løsning?

Bedste reference


COM objekter skal være registreret af en administrator bruger, som regel. (Der er finesser og undtagelser, som jeg ikke vil komme ind her, fordi det er baseret på din beskrivelse, at det ikke er hvad der foregår.)


Men når COM-objektet er registreret, skal alle brugere kunne bruge det, forudsat at objektet blev registreret med passende tilladelser.

Andre referencer 1


regsvr32 MyCOM.dll vil kalde DllRegisterServer eksporteret funktion i dll, hvad der sker der er op til dll. Normalt registrerer den CLSID og andre registreringsoplysninger under HKEY\_LOCAL\_MACHINE \ software \ Classes (Samme som HKEY\_CLASSES\_ROOT til skriveoperationer), og registreringen skal derfor være synlig for alle brugere, medmindre brugeren har en modstridende registrering under HKEY\_CURRENT\_USER \ software \ Classes.


Jeg gætter på, at registreringen ikke er problemet, men at din COM-objekt gør noget, som forhindrer det i at blive lastet for brugere uden administrasjon (Anmodning om skriveadgang til en nøgle under HKEY\_LOCAL\_MACHINE osv.) Du kan bruge Procesovervågning og se efter ACCESS\_DENIED-fejl og se om det giver nogle spor. [3]


Den anden mulighed er at manuelt registrere objektet under HKEY\_CURRENT\_USER \ software \ Classes til den ikke-admin-bruger. Dette bør udelukke registreringsproblemer.