2010-01-18 1 views
1

J'ai une application qui modifie certaines valeurs de registre lors de l'installation.Définition de la clé de Registre pour tous les utilisateurs en C#

Je modifie ProxyEnable et ProxyServer dans HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings.

Cela fonctionne très bien lors de l'installation en tant que "Just Me" dans l'installateur .NET mais je voudrais définir ces valeurs pour tous les utilisateurs sur l'ordinateur (Tout le monde).

Mon application est un serveur proxy qui enregistre toutes les demandes d'URL qu'il reçoit. Pour que cela fonctionne, les valeurs proxy doivent être configurées dans les paramètres Internet. Je voudrais que cela se produise dans le cadre du processus d'installation au lieu que l'administrateur doive le définir pour tous les utilisateurs.

Je sais que cela peut être fait avec la stratégie de groupe, mais certaines machines qui utiliseront cette application auront plusieurs utilisateurs et aucune stratégie de groupe (XP Home, etc.).

Existe-t-il un moyen de modifier les clés de registre mentionnées afin que les paramètres Prxy soient définis pour tous les IE de l'utilisateur?

Le code J'utilise actuellement est:

private void EnableProxy(string proxy) { 
     using(RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true)) { 
      registry.SetValue("ProxyEnable", 1); 
      registry.SetValue("ProxyServer", proxy); 
     } 

     settingsReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, 
      IntPtr.Zero, 0); 
     refreshReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0); 
    } 

    private void DisableProxy() { 
     using(RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true)) { 
      registry.SetValue("ProxyEnable", 0); 
      registry.DeleteValue("ProxyServer", false); 
     } 

     settingsReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, 
      IntPtr.Zero, 0); 
     refreshReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0); 
    } 

Répondre

0

ajouter à HKEY_USERS ne sera pas assez

+0

ok, alors qu'est-ce qui est requis? C'est une nouvelle zone pour moi. – modernzombie

+0

essayez d'ajouter la clé à HKEY_USERS à HKEY_CURRENT_USER – Shoban

Questions connexes