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

VB.NET Discussion :

Base de registre: Problème pour écrire un Dword


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 97
    Par défaut [Résolu] Base de registre: Problème pour écrire un Dword
    Bonjour à tous,

    je suis en train de perdre mes cheveux sur ce coup
    Je travail au niveau de la base de registre et j'essaye d'écrire la valeure maximum authorisée dans un Dword.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    regKeyEvt.SetValue("Retention", 4294967295, RegistryValueKind.DWord)
    Quand j'exécute cette ligne, je recois le message suivant:
    The type of the value object did not match the specified RegistryValueKind or the object could not be properly converted.
    Ce qui me perturbe, c'est que je peux écrire cette valeur en utilisant l'outil Regedit, soit en entrant la valeur en décimal ou en hexa (FFFFFFFF).
    Quand je passe par le code, ca ne passe pas.

    J'ai essayé de caster en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    UInt32.parse(4294967295)
    ou
    directcast(4294967295, long)
    ou
    ...
    Mais même message.

    En fait, un Dword est un unsigned int32, alors que ma valeur est un Long (ou int64). Je sais que vous me direz que c'est normale alors que cela ne passe pas, mais pourtant avec l'outil de microsoft (regedit) ca passe.
    D'ailleur, c'est la valeur maximale authorisée pour ce type.

    Je dois écrire cette valeur dans la clé cible car elle représente un état de la gestion des logs de l'EventViewer.

    Comment puis je écrire cette valeur dans un dword malgé tout? Qu'est ce qu'il me manque pour cela fonctionne?

    Merci à tous,

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 97
    Par défaut
    Bon, j'espère que ca pourra en aider d'autres (merci google).

    La valeur 4294967295 est trop grande pour rentrer dans un UINT32.
    Par contre 4294967294 rentre dans un UINT32.

    Comme on peut le deviner la seconde valeur est la valeur maximum accepée dans un UINT32 et donc celle que je dois rentrer dépasse cette capacité maximum.

    Vu que ma clé DWORD doit impérativement posséder la première valeur, comment faire pour la rentrer alors. Je vous le donne dans le mille:
    => pour représenter la valeur maximum d'un Dword: 0xFFFFFFFF il faut faire Convert.ToInt32(-1)

    Donc mon code va donner ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    regKeyEvt.SetValue("Retention", Convert.ToInt32(-1), RegistryValueKind.DWord)
    Je ne vous cache pas ma surpise de ce genre de solution. Est ce que d'après vous, c'est quelque chose de connu comme approche ou serait ce une asuce à la microsoft? En gros, est ce que quelqu'un comprend la logique.

  3. #3
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 97
    Par défaut
    Euh .... je suis peut être pas bien réveillé, mais je ne vois pas où est indiqué le fait que pour rentrer la valeur maximum d'un UInt, il faut le faire via -1.

Discussions similaires

  1. Problème pour écrire des requetes mysql complexes
    Par truemistress dans le forum Requêtes
    Réponses: 8
    Dernier message: 08/02/2007, 18h29
  2. [Serialisation]Problème pour écrire un DefaultComboBoxModel
    Par Strab dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 22/01/2007, 12h10
  3. [Base de registre] Problème ajout scanner
    Par guiguisi dans le forum Périphériques
    Réponses: 3
    Dernier message: 17/05/2006, 10h11
  4. [Débutant] Problème pour écrire dans un bouton
    Par Paulinho dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 06/01/2006, 11h45

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