2010-02-12 5 views
0

J'essaie d'enregistrer dll (ActiveX) pour un utilisateur non-administrateur en utilisant MSI. Pour créer des paramètres de registre, j'ai enregistré la DLL en mode administrateur, puis j'ai exporté les entrées de registre pertinentes et renommé tous HKLM en HKCU. Lorsque je l'installe pour un utilisateur non-administrateur, tout fonctionne correctement. Mais lorsque j'utilise les mêmes paramètres avec l'utilisateur admin, il y a un problème de découverte de TypeLib.Registre DLL (ActiveX) pour l'utilisateur non-administrateur

Ce qui devrait être changé dans les entrées de registre à travailler à la fois pour l'utilisateur admin et non-administrateur, lorsque l'enregistrement effectué sous HKCU?

Merci

Répondre

0

Si vos entrées sont vraiment enregistrées sous HKCU, il fonctionnera. Quel programme d'installation MSI utilisez-vous? Il devrait y avoir un moyen de spécifier qu'il doit être installé en mode utilisateur.

Laissez-vous la dll auto-enregistrer ou avoir le msi enregistrer le dll? Il est préférable que le MSI le fasse, mais c'est plus douloureux. Si vous avez l'auto-enregistrement .dll, vous devez vous assurer que la DLL est enregistrée dans HKEY_CURRENT_USER et non dans HKEY_LOCAL_MACHINE, ce que fait ATL par défaut.

Si vous avez construit dans VS2008 avec ATL, vous voulez ajouter: AtlSetPerUserRegistration(true); à votre DllRegisterServer et DllUnregisterServer.

De toute façon, ce sont des choses à rechercher. Vous pouvez utiliser Process Monitor et regarder les commandes Reg pour voir exactement ce qui se passe; quelque chose écrit quelque part à HKLM.

+0

Merci, J'ai utilisé l'installation MSI, mais il y avait un problème avec l'importation du registre. – Zaky

+0

Est-ce que cela signifie que vous avez trouvé le problème? Si oui, pourriez-vous poster ce que c'était comme réponse? Si ce n'est pas le cas, si vous pouvez répondre à certaines des questions que je pose dans ma réponse, je pourrais peut-être vous donner plus de précisions. – taxilian

Questions connexes