Projet d'installation de Visual Studio - Paramètres du registre d'utilisateurs

J'essaye de maintenir un projet d'installation dans Visual Studio 2003 (oui, c'est une application héritée). Le problème que nous avons pour le moment est que nous devons écrire des entrées de registre pour HKCU pour chaque utilisateur sur l'ordinateur. Ils doivent être dans le HKCU plutôt que dans HKLM car ce sont les paramètres utilisateur par défaut, et ils changent par utilisateur. Mon sentiment est que

  1. Ce n'est pas possible
  2. Ce n'est pas quelque chose que l'installateur devrait faire, mais quelque chose que l'application devrait faire (après tout ce qui se passe quand un profil utilisateur est créé après l'installation?).

Dans cet esprit, je veux toujours changer le moins possible dans l'application, donc ma question est, est-il possible d'ajouter des entrées de registre pour chaque utilisateur dans un projet de configuration Visual Studio 2003 ?

Et, pour le moment, le projet répertorie cinq clés racine de registre ( HKEY_CLASSES_ROOT, HKEY_CURRENT_USER , HKEY_LOCAL_MACHINE , HKEY_USERS et User / Machine Hive). Je ne sais pas vraiment quoi que ce soit à propos de la clé racine des utilisateurs, et je n'ai pas vu User / Machine Hive. Quelqu'un peut-il m'éclairer sur ce qu'ils sont? Peut-être qu'ils pourraient résoudre mon problème ci-dessus.

0
ajouté édité
Vues: 7
merci pour cette question
ajouté l'auteur Danny G, source

4 Réponses

Premièrement: Oui, c'est quelque chose qui appartient à l'Application pour le reson exact que vous avez spécifié: Que se passe-t-il après la création de nouveaux profils utilisateur? Bien sûr, si vous utilisez un domaine, il est possible de mettre des choses dans le registre lors de la création, mais ce n'est pas vraiment un cas d'utilisation. L'application doit vérifier s'il y a des seetings et utiliser les paramètres par défaut sinon.

Cela étant dit, il est possible de changer d'autres clés d'utilisateurs via la HKEY_USERS Hive.

Je n'ai aucune expérience avec le projet d'installation de Visual Studio 2003, donc voici un peu de code VBScript (totalement indépendant) qui pourrait vous donner une idée où chercher:

const HKEY_USERS = &H80000003
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = ""
objReg.EnumKey HKEY_USERS, strKeyPath, arrSubKeys
strKeyPath = "\Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing"
For Each subkey In arrSubKeys
    objReg.SetDWORDValue HKEY_USERS, subkey & strKeyPath, "State", 146944
Next

(Code Courtoisie de Jeroen Ritmeijer )

0
ajouté

Je suis en partie à ma solution avec cette entrée sur MSDN (je ne sais pas comment je ne pouvais pas le trouver avant).

Utilisateur / Machine Hive
Les sous-clés et valeurs saisies sous cette ruche seront installées sous la ruche HKEY_CURRENT_USER lorsqu'un utilisateur choisira "Just Me" ou la ruche HKEY_USERS ou lorsqu'un utilisateur choisira "Everyone" lors de l'installation.

Éditeur du Registre

0
ajouté

Malgré ce que article MSDN dit à propos de l'utilisateur / Machine Hive, il n'écrit pas à HKEY_USERS. Il écrit plutôt à HKCU si vous sélectionnez Just Me et HKLM si vous sélectionnez tout le monde.

Donc, ma solution va être d'utiliser la ruche utilisateur / machine, puis dans l'application, il vérifie si les entrées de registre sont dans HKCU et sinon, les copie depuis HKLM. Je sais que ce n'est probablement pas la façon la plus idéale de le faire, mais elle a le moins de changements.

0
ajouté

Je devine que parce que vous voulez le définir pour tous les utilisateurs, que vous êtes sur une sorte d'ordinateur partagé, qui fonctionne probablement sous un domaine?

VOICI DES DRAGONS

Disons que Joe et Jane se connectent régulièrement sur l'ordinateur, alors ils auront chacun des «registres».

Vous allez ensuite installer votre application, et l'installateur emploiera des hacks géants et des choses dégoûtantes pour mettre les objets sous HKCU pour eux.

ALORS, Bob viendra et se connectera (lui, et 500 autres personnes ont des comptes dans le domaine et peuvent donc le faire). Il n'a jamais utilisé cet ordinateur auparavant, donc il n'a pas de registre. La première fois qu'il se connecte, Windows lui en crée un, mais il n'aura pas votre réglage.

Votre application tombe alors ou se comporte mal, et bob se plaint à haute voix de ces produits merdiques de Raynixon incorporés.

La bonne réponse est d'avoir quelques paramètres par défaut dans votre application, qui peuvent les écrire dans le registre s'il ne les trouve pas. En règle générale, votre application ne doit jamais dépendre du registre et doit créer les éléments nécessaires pour toute entrée de registre, et pas seulement HKCU.

0
ajouté