[.net2] ecrire dans la base de registre une valeur dword supérieur à 2^31

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 204 fois - Téléchargée 30 fois

Contenu du snippet

J'ai rencontré un petit problème lors de l'écriture d'une valeur dword dans la base de registre.
Cette valeur 4294967197 est bien inférieur à 2^32 donc à priori aucun problème mais erreur.
La classe Registry ne permet pas d'écrire des valeurs supérieur à 2^31 (Int32), quand aux entiers de la base de registre ils sont signés (UInt32) d'ou l'erreur !

Le code ci-dessous permet donc de passer une valeur signé à notre classe Registry
N'oubliez pas d'importer l'espace de nom Microsoft.Win32 pour la classe Registry

Source / Exemple :


Dim UInt32Val As UInt32 = 4294967197
Dim Int32Val As Integer = (CType(-(UInt32.MaxValue - UInt32Val), Integer) - 1)

Dim MyKey As RegistryKey = Registry.CurrentUser.OpenSubKey("MaCle", True)

MyKey.SetValue("MaValeur", Int32Val, RegistryValueKind.DWord)

Conclusion :


J'espère que ce code pourra en aider plus d'un car moi même j'ai bien été content d'avoir trouvé de l'aide ce problème d'écriture de valeur.
Bon code à tous :)

A voir également

Ajouter un commentaire

Commentaires

Messages postés
11
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
6 août 2015

Merci pour l'astuce
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
20
Le code tourne sous vb2005 mais sous vb2003 je ne pense pas qu'il y ai un quelquonque problème

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.