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

API standards et tierces Java Discussion :

[jniregistry] lire une valeur


Sujet :

API standards et tierces Java

  1. #1
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut [jniregistry] lire une valeur
    bonjour tout le monde,

    avant de commencer je tiens à vous dire que j'ai beau cherché sur google, mais sans aucun resultat, sauf si je suis un gros con de la recherche.

    j'essaye d'utiliser cette API, mais aucune documentation ni exemple ne sont fournis avec. quelqu'un peut il m'eclairer avec un exemple ? disons pour lire le nom de la connexion depuis Name de la clé HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{0E5E0162-B05D-4D05-88CD-5C01CCB312FF}\Connection

    merci d'avance.

  2. #2
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    bonjour,

    j'ai trouver mieux que google, ca s'appelle devellopez.com

    PS: Je te rassure je ne me moque pas de toi il m'arrive régulierement d'oublier aussi j'espere que c'est ce que tu cherchais.

  3. #3
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    j'ai dèja vu ça, ehh oui !!

    mais t'as raison j'aurai dû être plus clair. alors voila ce qu'il me faut : j'ai reussi importer et utiliser jniregistry, j'ai reussi à ouvrir les sous clé jusqu'à celle que je desire (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{0E5E0162-B05D-4D05-88CD-5C01CCB312FF}\Connection)
    cette clé comporte une valeur (ou je ne sais comment l'appeler !!) Name. dans cette derniere, j'ai le nom de la connexion, et c'est ce que je veux recuperer. la classe RegistryValue a une methode getByteData() qui normalement dois retourner le nom, mais je ne sais pas comment faire (n'allez pas me dire taValeur.getByteDate() ça retourne je ne sais quoi ).

    alors si quelqu'un a une solution je suis preneur

    merci

  4. #4
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    voici un petit bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    try{
     
            regKey = Registry.getTopLevelKey("HKEY_LOCAL_MACHINE");
            regKey = regKey.openSubKey("SYSTEM\\");
            regKey = regKey.openSubKey("CurrentControlSet\\");
            regKey = regKey.openSubKey("Control\\");
            regKey = regKey.openSubKey("Network\\");
            RegistryKey temp = null;
     
            int numSubKeys = regKey.getNumberSubkeys();
     
            for (int i = 0 ; i < numSubKeys ; i++){
                temp = regKey.openSubKey(regKey.regEnumKey(i)+"\\");
                if (this.hasConnexionsSubKey(temp))
                    break;
                temp = null;
            }
     
            if (temp != null){
     
            }
     
            }catch(Exception e){
                e.printStackTrace();
            }
     
     
    private boolean hasConnexionsSubKey(RegistryKey key) throws Exception{                      
     
                if(key.regEnumValue(0).equals("Class")){
                    System.out.println(key.getValue("Class").getByteData());
                    //la je veux voir si le contenu de "Class" est "Net"
                }
     
            return false;
        }
    et voici le javadoc (si on peut l'appeler ainsi ) (edit: desolé je l'ai oublié)
    http://www.gjt.org/javadoc/com/ice/j...e-summary.html
    merci d'avance

  5. #5
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    bon alors premiere chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(key.getValue("Class").getByteData());
    ceci ne peut te renvoyer le contenu car la méthode getByteData te renvoies un tableau d'octets (de l'ascii je pense mais je suis pas sur) tu dois le transformer avant (tu dois pouvoir le transformer en string je pense.

    getByteData

    public abstract byte[] getByteData()
    EDIT: vive la classe String:

    String(byte[] bytes)
    Constructs a new String by decoding the specified array of bytes using the platform's default charset.

  6. #6
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    d'accord, mais ceci je pense est fait implicitment par ... je ne me souviens plus par quelle partie .. mais je pense que c'est par la methode println() elle meme, tout objet passé à cette methode se voit rajouter le .toString() (si ce n'est pas dèja une String bien evidement).


    corrigez moi si j'ai tord.
    @+

  7. #7
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    Citation Envoyé par let_me_in Voir le message
    d'accord, mais ceci je pense est fait implicitment par ... je ne me souviens plus par quelle partie .. mais je pense que c'est par la methode println() elle meme, tout objet passé à cette methode se voit rajouter le .toString() (si ce n'est pas dèja une String bien evidement).


    corrigez moi si j'ai tord.
    @+
    faut quand tu affiche un entier ca le converti pas en string a ce que je sache... D'aprés ce que je sais il n'y a aucune conversion de faite par println().
    EDIT : je rectifie ca fait effectivement toString sur l'objet mais a mon avis ca doit te retourner l'adresse du premier élément du tableau (pas sur).

    essaie d'afficher les éléments du tableau 1 a 1 et donne moi le résultat svp ...

  8. #8
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    bonjour,

    j'ai jeté l'éponge, je vais faire ma propre dll.

    merci pour ton aide

    a+

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Par défaut
    Bonjour,

    Il ne te manquait pas grand chose en fait pour avoir la valeur que tu recherche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private boolean hasConnexionsSubKey(RegistryKey key) throws Exception{                      
             
                if(key.regEnumValue(0).equals("Class")){
                    System.out.println(key.getValue("Class").getByteData());
                    //la je veux voir si le contenu de "Class" est "Net"
                    
                    //en faisant ca, tu devrais obtenir ce que tu veux
                    String contenu = key.getDefaultValue();
    
                }
                             
            return false;
        }

    cdlt

  10. #10
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    bonjour tout le monde (je suis de retour )

    en fait voici le code qui fait ceci (une fonction recursive) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    private String getKeysList(RegistryKey topLevelKey) throws Exception{
     
        	int nbKeys;
    		String result=new String();
     
    		//String path="SYSTEM\\CurrentControlSet\\Control\\Network\\";
    		//RegistryKey topLevelKey= Registry.openSubkey(Registry.HKEY_LOCAL_MACHINE, path, RegistryKey.ACCESS_ALL);;
     
    		nbKeys = topLevelKey.getNumberSubkeys();
     
    		if (nbKeys != 0){
    			for (int i=0 ; i < nbKeys ; i++){
    				String tmp = getKeysList(topLevelKey.openSubKey(topLevelKey.regEnumKey(i)));
    				if (!tmp.equals("")&&tmp != null)
    					result = result+tmp+":";
    			}
    		}else{
    			if (topLevelKey.getName().equals("Connection")){
    				RegistryValue value = topLevelKey.getValue("Name");
     
    				if (value != null){
    					System.out.println(topLevelKey.getStringValue("Name"));
    					return topLevelKey.getStringValue("Name");
    				}
    				else
    					return null;
     
    			}
    		}
    		return result;
     
        }
    c'est pas très clean mais bref, je l'ai testé et ça marche, le seul probleme c'est que sur un poste avec windows en francais, j'ai pas les caractères accentués ; quelqu'un a une idée pour résoudre ça ?

    merci

Discussions similaires

  1. [ASE 12.5]Lire une valeur au clavier?
    Par bugmenot dans le forum Adaptive Server Enterprise
    Réponses: 1
    Dernier message: 26/01/2007, 08h05
  2. registre lire une valeur binere
    Par CLion dans le forum Windows
    Réponses: 3
    Dernier message: 05/11/2006, 22h39
  3. [DEBUTANT] Lire une valeur d'une collection
    Par ero-sennin dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 03/11/2006, 20h43
  4. Comment Lire une valeur à partir d'un fichier XML en C++?
    Par Hamdi Hedhili dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 13/12/2005, 10h09
  5. Lire une valeur dans le registre
    Par John.s dans le forum C
    Réponses: 2
    Dernier message: 26/11/2003, 19h55

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