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




vb net parametre application (3)

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 HKCU plutôt que 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 d'installation de 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.


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?

VOILÀ 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 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.


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 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 )


Malgré ce que dit l' article MSDN à propos de User / Machine Hive, il n'écrit pas dans 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.







installation