2009-11-11 9 views
1

J'essaie de réparer une application existante qui utilise un projet d'installation Visual Studio 2005.VS 2005 Setup - HKCU

Nous l'exigeons de travailler sur des comptes utilisateur limités pour XP, notre application est écrite en C# pour .Net 2.0.

Il écrit des clés dans HKCU au cours de l'installation, mais ignore l'étape de l'interface utilisateur pour choisir «Installer pour tout le monde» contre «Seulement moi». Donc, il est par défaut d'installer pour tout le monde.

Le problème est que vous installez sur un compte d'administrateur, puis basculez vers un compte limité. Cela lui fait faire une réparation qui échoue. Si je vais à un autre compte d'administrateur, cela fonctionne très bien.

Ma question est, où est-ce que c'est mettre ces clés pour HKCU que le compte limité essaie de lire/écrire?

Y a-t-il un endroit magique dans HKEY_USERS qui s'applique à "Tout le monde"? Je ne comprends pas comment cela fonctionne de l'utilisateur admin à un autre utilisateur admin. Pour tester cette théorie, j'ai entré manuellement les clés dans HKCU sur l'utilisateur limité, et il a encore essayé de réparer. Si je savais où cette clé "Tout le monde" est, je pourrais simplement accorder un accès complet à tous les utilisateurs avec une action personnalisée de sorte que le compte limité ne forcerait pas une installation de réparation.

Répondre

1

La clé HKCU «Tout le monde» n'existe pas. HKCU est par utilisateur. Windows Installer essayera toujours de réparer, et à moins que tout le monde ait accès au fichier MSI d'origine, il échouera probablement.

Fondamentalement, la règle de base que je suis toujours est de ne jamais écrire à HKCU lors de l'installation, à la place que j'écris HKLM lors de l'installation, et la première fois que l'application fonctionne alors je crée les clés HKCU pertinentes.

Voir ma réponse à la question SO Launching a program in different creds or HKCU and installers et consulter ActiveSetup comme une alternative viable pour l'écriture de la configuration HKCU.

+0

Nous sommes tombés sur cette solution nous-mêmes. Nous allons extraire les paramètres d'un fichier en premier pour chaque utilisateur et les placer dans HKCU. S'il s'agissait d'une nouvelle application, nous éviterions complètement d'utiliser le registre et n'utiliserions que des fichiers dans le dossier de données d'application de vista-uac-safe. – jonathanpeppers

1

est-

HKEY_USERS\.DEFAULT\ 

la branche que vous cherchez?

+0

Ceci est le compte système, et je ne pense pas que mon installation s'exécute sous le système. Voici un lien: http://blogs.msdn.com/oldnewthing/archive/2007/03/02/1786493.aspx – jonathanpeppers