2011-10-29 3 views
2

Je souhaite lire toutes les variables d'environnement du registre et en définir une nouvelle valeur avec C# dans Visual Studio 2010 Express.Modifier la variable d'environnement dans le registre

Ainsi je lis la sous-clé de la machine locale:

SYSTEM\CurrentControlSet\Control\Session Manager\Environment 

et là, la valeur de Path.
En lisant la valeur Path:

reg = Registry.LocalMachine.OpenSubKey(SUB_KEY_PATH, true); 

Je reçois une exception, que je n'ai pas l'autorisation pour cela.

Par conséquent, je mis la valeur dans le manifeste:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 

Mais maintenant, je ne peux pas compiler mon projet, car ClickOnce ne le supporte pas. Comment puis-je compiler un projet avec le niveau de sécurité de requireAdministrator? Une solution que j'ai trouvé est de le compiler sans le niveau requireAdministrator et après j'ai changé la valeur dans myproject.exe.manifest. Est-ce que je l'ai bien vu, que je dois toujours copier les deux fichiers (manifeste & exe-fichier) sur un autre ordinateur pour le faire fonctionner correctement? Est-il possible de mettre l'information dans le fichier exe en compilant?

+1

Vous devez oublier ClickOnce. –

+0

Comment puis-je le désactiver? – stormsam

+0

Vous ne le désactivez pas, vous ne l'utilisez tout simplement pas pour déployer votre produit. Et utilisez un programme d'installation standard, créé par un projet d'installation et de déploiement. Non disponible dans l'édition Express. –

Répondre

1

Si vous souhaitez élever pendant l'installation, vous ne pouvez pas utiliser ClickOnce. C'est un choix de conception. Vos options sont donc:

  1. Utilisez un package d'installation standard qui vous permettra d'afficher la boîte de dialogue d'élévation UAC.
  2. Modifiez l'environnement PATH de l'utilisateur plutôt que la variable système. Cette option est parfaitement compatible avec la philosophie de ClickOnce par utilisateur.
Questions connexes