8
votes

Comment supprimer des clés de registre HKCU lors de la désinstallation de logiciels?

Lorsque mon logiciel est installé, via un MSI, il crée des clés de registre dans HKLM. Lorsque les gens utilisent le logiciel, leurs préférences individuelles sont enregistrées sur HKCU. Lorsque le logiciel est désinstallé, les clés de registre HKLM et HKCU sont supprimées, mais je pense que ce n'est que les clés HKCU pour l'utilisateur qui exécute la désinstallation qui sera supprimée. Est-ce correct? Si oui, comment puis-je vous assurer que les sous-clés HKCU pour d'autres personnes qui ont utilisé mon logiciel sur la même machine sont supprimées?

Mise à jour: Les «préférences individuelles» enregistrées dans mon cas ne sont pas vraiment des paramètres que l'utilisateur a choisi, mais plutôt des données que l'application stockée lors de l'exécution de cet utilisateur. Ce n'est donc pas vraiment des données que l'utilisateur voudrait conserver. Il semble juste de la supprimer sur la désinstallation car il n'aura aucune utilité si la demande est réinstallée. Donc, je suppose que la meilleure suggestion jusqu'à présent est ed's's : N'utilisez pas le registre , bien que cela ne résolvait pas vraiment la question initiale.


0 commentaires

3 Réponses :


2
votes

On ne peut pas être fait, seules les entrées pour l'utilisateur actuel sont supprimées.

Vous pouvez utiliser ActiveSetUp pour contourner ce problème, mais il est presque sans papiers de côté de ce lien et non pris en charge par Microsoft. Donc, si vous l'utilisez, ne comptez pas dessus;)

L'idée de ne pas supprimer les données utilisateur pendant la désinstallation est un sujet plutôt controversé avec une histoire plutôt intéressante ... Je me souviens de vieilles versions de bureau utilisé pour enregistrer des documents sous le répertoire d'installation, les plaintes numériques que nous avions utilisées lorsque Mettre à niveau Les utilisateurs supprimeraient le dossier Old Office et perdre leurs documents était énorme. Plus récemment, la plainte est la perte de personnes de leur normal.dot .

Comme une personne impliquée avec des logiciels d'affaires, mon point de vue est que si les gens comptent sur votre logiciel dans le cadre de leur flux de travail et prennent le temps de personnaliser les paramètres, ne suppriment pas les paramètres pendant la désinstallation.

Du point de vue d'un autre point de vue, si vous désinstallez un jeu que vous avez coulé des heures / jours / semaines à jouer - voudriez-vous que vos sauvegardes suppriment? Vos fichiers de configuration personnalisés? Qu'en est-il d'un jeu sur un ordinateur familial partagé, quelqu'un désinstalle un jeu pour libérer de l'espace disque, ignorant qu'un autre membre de la famille le joue régulièrement. Voulez-vous gérer ce genre de plaintes de vos clients?


1 commentaires

>> Si les gens s'appuient sur votre logiciel dans le cadre de leur flux de travail et prenez le temps de personnaliser les paramètres, ne suppriment pas les paramètres pendant la désinstallation. << IIRC, c'est (était?) Faites également partie des meilleures pratiques de l'installateur Windows.



3
votes

Une réponse courte est que vous ne le faites pas. L'installateur est supposé de supprimer les entrées It crée et rien d'autre. Si votre application crée des paramètres par utilisateur au moment de l'exécution, ceux-ci ne sont pas appartenant à la routine d'installation.

Si vous voulez vraiment vraiment faire cela, vous pouvez créer une action personnalisée et forcer la désinstallation à exécuter en tant qu'administrateur afin que vous puissiez accéder à toutes les ruches d'utilisateur. Soyez averti - il s'agit d'un comportement totalement non standard et peut-il prendre une quantité importante de ressources de temps et de systèmes pour monter et démonter toutes les ruches de l'utilisateur. Et si votre désinstallateur n'est pas prudent, vous pouvez endommager les choses dans les ruches de niveau système et rendre votre système inébranlable.

Comme je le mentionne dans le commentaire à la réponse de Sascha, Windows Installer Les meilleures pratiques disent (dit?) Pour laisser les paramètres utilisateur personnalisés sur la désinstallation. De cette façon si l'utilisateur réinstalle votre logiciel, leurs paramètres sont disponibles.


4 commentaires

Je ne peux pas juste boucler à travers chacun des sous-arbres de HKEY_USERSER et supprimer mes données? Ou est-ce ce que vous dites sera lent?


Il est dangereux de supprimer des données de cette manière dans des scénarios avec des profils itinérants. Je suis un peu floue sur les détails, mais je pense que cela visser les comparaisons de l'horodatage et que les données de profil seront perdues si le profil incorrect est sélectionné comme gagnant de la "fusion".


Ok, reconnaissez que c'est pas "tes données". Une fois que c'est dans une ruche de registre utilisateur, ce sont les données de l'utilisateur. Et oui, chargement et déchargement des ruches d'utilisateur distinctes est assez lente. Et vous devez ne rien faire scrupuleusement aux profils de comptes système, vous devez donc d'abord identifier les profils d'utilisateurs réguliers. Et comme Michaelu mentionne, si des profils d'itinérance sont utilisés, vous pouvez faire endommager les choses qui n'appartiennent pas à votre candidature (souhaitez-vous vraiment que le groupe client vous appelle avec une facture pour reconstruire tous leurs profils utilisateur?). C'EST UNE MAUVAISE IDÉE.


Voir la réponse de ED au-dessus de celui-ci pour un meilleur plan.



3
votes

Si vous voulez vraiment pouvoir éliminer les données utilisateur, stockez les données de l'utilisateur sur le système de fichiers. Quelque part comme "Documents et paramètres \ Nom d'utilisateur \ Données d'application \ Votre organisation \ Votre application". Ces données seraient triviales pour supprimer lors de la désinstallation, avec une entrée de la table Removefile.

L'équipe de développement de l'installateur Windows spécifiquement résolue cela sur leur blog. Voir "Règle 26". http://blogs.msdn.com/windows_installer_team/archive/ 2006/05/20 / 595950.aspx

mise à jour:

Il y a de nombreuses années, j'ai écrit du code qui fait ce que vous décrivez avec le registre, et est rapidement venu le regretter. C'était une douleur, mais plus que cela, il avait une question liée aux privilèges. La version courte est que le service d'installateur ne fonctionne pas avec tous les privilèges que Admin a. Ils ne sont pas seulement handicapés, ils sont absents du jeton de sécurité du processus. Cela inclut notamment le privilège nécessaire pour charger et décharger des ruches de registre (SE_RESTORE_PRIVILEGE au fur et à mesure que je vous souviens). Cela a amené le code à rompre pour une installation silencieuse et de désinstaller, même si l'utilisateur invoquant était admin, et je ne pouvais pas simplement interdire l'installation silencieuse et la désinstallation.

Un autre problème qui n'a pas encore augmenté est Active Directory. Je ne suis pas certain, mais je pense que ce que vous décrivez, cela va avoir de graves cerceaux supplémentaires à sauter dans un environnement d'annonce.

En général, j'essaie très fort d'éviter d'installer ou de désinstaller Touch The Hkcu Hive. J'ai trouvé cela pour être une source constante de douleur significative pour un avantage minimal.


0 commentaires