IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Modification base de registre


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Par défaut Modification base de registre
    Salut tous,

    Je programme actuellement en C# sur une machine embarqué. Je souhaite modifier la valeurs des clés suivante se trouvant dans le dossier HKEY_LOCAL_MACHINE :
    • EnableDHCP
    • IpAddress
    • DhcpIPAddress
    • Subnetmask
    • DhcpSubnetMask


    Pour se faire, j'utilise la fonction Registry.SetValue (Registry.SetValue).

    Le problème est le suivant :
    Cela ne marche pas. Je m'explique , lorsque la fonction est appelé, elle ne modifie pas la valeur des clés.
    J'ai utilisé la fonction Registry.getValue (Registry.GetValue)
    J'ai fais les vérifications suivantes :
    • Le chemin d'accès est bon
    • L'existence de la clé
    • la valeur assignée est bonne


    Cependant en appelant la fonction System.Threading.Thread.Sleep() avec comme argument 15000 ( 15 sec) après l'appel de la fonction Registry.SetValue, la modification est effectuée.

    Ce que je ne comprends pas c'est pourquoi la fonction Registry.SetValue s’exécute correctement en présence de la fonction sleep ?

  2. #2
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    La dernière fois que j'ai utilisé ce code, c'était dans un thread, donc j'avais bien une fonction sleep.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    while (Thread.CurrentThread.IsAlive)
                {
     
                    RegistryKey myRegistryKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\windows\CurrentVersion\Internet Settings\Zones\0\", true);
     
                    // écriture de la clé et de sa valeur dans notre sous clé.
                    myRegistryKey.SetValue("2101", 0);
                    myRegistryKey.Close();
     
                    Thread.Sleep(300000);
                }
    Fais tu un Close() ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Par défaut
    Non je ne fais pas de Close(); Pourquoi est-ce nécessaire ?
    Mais pourquoi utilises-tu un sleep ? La fonction SetValue est censé s’exécuter et ensuite rendre la main ?

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    Ce programme modifie la BDR en permanence à cause d'une GPO sur nos postes qui gêne certains programmes sur certains postes.
    Cette GPO est mise à jour toutes les demi heures.

    Donc pour revenir à mon thread, je ne le tue pas. Je fais juste un sleep de quelques minutes.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Par défaut
    Ok. Donc ton code devrait fonctionner correctement sans le Sleep dans mon cas ?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 13
    Par défaut
    C'est étrange mais je n'arrive pas à atteindre ma sous clé. La fonction OpenSubKey me renvoit NULL.
    Est ce que je m'y prends de la bonne manière ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RegistryKey DHCP_key = Registry.LocalMachine.OpenSubKey(@"Comm\\XXX\\XXX\\EnableDHCP", true);
    XXX étant des noms de dossier.

Discussions similaires

  1. supprimer msgbox sur modif base de registre
    Par gronaze dans le forum Windows XP
    Réponses: 5
    Dernier message: 03/07/2009, 17h00
  2. modification dans la base de registre : bug
    Par kiriyamakaneda dans le forum Windows XP
    Réponses: 2
    Dernier message: 02/02/2008, 23h53
  3. Base de registre : Blocage modification d'une valeur
    Par damsmut dans le forum Windows XP
    Réponses: 6
    Dernier message: 26/09/2006, 02h25
  4. modification reguliere de la base de registre
    Par cedric49fr2000 dans le forum Windows
    Réponses: 6
    Dernier message: 14/05/2006, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo