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 :

[Windows]accès base de registre windows [FAQ]


Sujet :

API standards et tierces Java

  1. #1
    Membre averti
    Avatar de Greg01
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2002
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2002
    Messages : 297
    Points : 426
    Points
    426
    Par défaut [Windows]accès base de registre windows
    Peut-on accèder en java à la base de registre windows ? Si oui, comment ?

    Merci ![/quote]

  2. #2
    Membre averti
    Avatar de Greg01
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2002
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2002
    Messages : 297
    Points : 426
    Points
    426
    Par défaut Solution propriétaire ... et payante
    http://cogentlogic.com/cocoon/CogentLogicCorporation/JNDI.xml

    ça ne répond pas à mon problème .... alors si quelqu'un à une idée sur la question, il est prié de se manifester !

    Greg.

  3. #3
    Membre averti
    Avatar de Greg01
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2002
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2002
    Messages : 297
    Points : 426
    Points
    426
    Par défaut J++
    Après petite recherche sur le net, j'ai trouvé ça : http://msdn.microsoft.com/visualj/technical/tutorial/wfcregistry/default.asp

    C'est gentil tout plein, et ça permet d'accéder à la base de registre windows. Mais n'allez pas croire que je fais les questions et les réponses ! Le fond de ma pensée est le suivant : un applet Java (un .class donc), placé dans une page web et donc executé par un navigateur web, peut-il accéder à la base de registre windows de l'ordinateur sur lequel il s'exécute ? Et si c'est possible, dans quelles conditions ?

    Vu que je ne connais pas J++, peut-être quelqu'un pourrait m'éclairer !

    Merci.
    Greg

  4. #4
    Membre averti
    Avatar de Greg01
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2002
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2002
    Messages : 297
    Points : 426
    Points
    426
    Par défaut Windows Registry API Native Interface


    J'ai trouvé ça : http://www.trustice.com/java/jnireg/
    ça ressemble fort à ce que je cherche, mais (ben oui y a un 'mais'), cette solution utilise un DLL, une librairie externe.

    J'en conclut donc qu'il n'est pas possible de modifier la base de registre windows sans passer par une librairie externe, ie en utilisant uniquement les packages d'origine. Alors si je me trompe, faites-le moi savoir !

    Je viens d'avoir une idée : en éditant les fichiers user.dat et system.dat, on pourrait changer des infos dans le registre ! Encore faut-il savoir comment sont écris ces fichiers ...

    Affaire à suivre ...

    Greg

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2002
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Il est tout à fait logique que tu doives passer par une librairie externe, vu que l'essence même de java est la portabilité. Alors il ne reste qu'à utiliser JINI.

    bonne m...


    chouba

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Il faut utiliser une librairie microsoft. Voici une exemple 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
     
    import com.ms.wfc.app.*;
    ....
    public void readRegistry(String _key_to_find) {
       System.out.println("Reading main registry entries: ");
     
       RegistryKey theKey = Registry.LOCAL_MACHINE;
     
       String[] keyNames = theKey.getSubKeyNames();
       int nameCount = theKey.getSubKeyCount();
       int i = 0;
     
       while (i < nameCount) {
           System.out.println(keyNames); 
           ++i;
       }
    }
    Si tu travaille avec visual J++ tu dois avoir le package com.ms.wfc.app.

  7. #7
    Membre averti
    Avatar de Greg01
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2002
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2002
    Messages : 297
    Points : 426
    Points
    426
    Par défaut
    Ok pour le bout de code sous J++ ... Mais est-ce je peux en faire une applet ? Si oui, quels navigateurs va pouvoir l'interpréter ? Il faut un interpréteur compatible J++ ...

    Je n'ai pas J++, donc je ne peux pas tester ! Mais j'aimerai savoir si cette evéntualité est possible.

    Merci.
    Greg

  8. #8
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    C'est possible de faire cela dans une applet avec IE mais pas avec un autre navigateur.
    Pour un autre navigateur, y a pas d'autre solution que JNI...

  9. #9
    Membre averti
    Avatar de Greg01
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2002
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2002
    Messages : 297
    Points : 426
    Points
    426
    Par défaut
    Ok merci !

  10. #10
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Autre info importante, si tu utilise le JDK1.4, il y a l'API Preferences qui te permet d'accéder à un noeud de la base de registre.

  11. #11
    Membre averti
    Avatar de Greg01
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2002
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2002
    Messages : 297
    Points : 426
    Points
    426
    Par défaut
    Ah bah oui, la doc de l'API du JDK 1.4 le dit effectivement, on peut parcourir les noeuds de la base de registre ... Mais comment ? Je voudrais bien un exemple, car ça m'intéresse grandement !

  12. #12
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import java.util.prefs.Preferences;
     
    public class Test extends Object {
     
       public static void main(String[] args) {
          Preferences lPrf = Preferences.userRoot().node( "Test/My App" );
          lPrf.put( "My Key", "My Data" );
          System.out.println( lPrf.get( "My Key", "default" ) );
       }
    }

  13. #13
    Membre averti
    Avatar de Greg01
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2002
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2002
    Messages : 297
    Points : 426
    Points
    426
    Par défaut
    Oh purée ça marche !

    Je remarque qd même que c'est dans le dossier JavaSoft. ça ressemble fort aux 2 fonctions Visual Basic qui sont limites à une parite très restreinte de la base de registre.
    D'où ma question : peut-on écrire/lire PARTOUT dans la base de registre avec cette méthode ou est-elle limitée ?

    En tout cas, merci bcp !
    Greg

  14. #14
    Futur Membre du Club
    Inscrit en
    Mars 2002
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 5
    Points : 6
    Points
    6
    Par défaut question
    j'interviens dans le débat, mais y'a une question qui me turlupine :

    si on pouvait comme ça grâce à un applet faire ce que l'on veut sur une machine cliente en modifiant sa base de registre (donc de sécurité, proxy, ...)
    y'aurait pas un gros gros pb de sécurité ?

    Logiquement sur ce que j'ai compris des applets, dès que l'on tripatouille ds ce domaine, faut voir du côté des certificats de sécurités qui doivent être accepté par la machine cliente.

  15. #15
    Membre averti
    Avatar de Greg01
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2002
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2002
    Messages : 297
    Points : 426
    Points
    426
    Par défaut Re: question
    Je t'avoue que sur quoi je travaille actuellement. Je m'efforce de chercher les failles potentielles de Java, et surtout des applets Java. Normalement, les applets java sont exécutées dans une sandbox qui leur interdit certaines opérations comme l'accès à la base de registre, l'accès aux fichiers et l'accès à des serveurs distants. Mais, au fil des versions, ces paramètres de sécurité se sont assouplis (j'ignore pourquoi) et il est possible d'outre-passer les restrictions de la sandbox.
    Pour ce faire, le programmeur peut signer un applet très simplement à l'aide d'un certificat (on trouve facilement des explications sur le web). Et une option de IE permet de faire confiance (et donc d'outre-passer la sandbox) à tous les applets java signées. C'est un gros problème de sécurité car ces certificats n'ont aucune valeur : tout le monde peut signer une applet, bonne ou mauvaise !
    Je recherche des solutions pour ce genre de problème. Et j'essaie de justifier ces craintes en construisant des exemples concrets.

    Si des personnes le désirent, je pourrais communiquer une partie de mes résultats ...

    Greg.

  16. #16
    Candidat au Club
    Inscrit en
    Mars 2002
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Cela risque d'être effectivement très intéressant, j'en frémis déjà d'horreur.


  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 124
    Points : 76
    Points
    76
    Par défaut
    j'ai vu votre truc et c'est super interessant mais du coup comment se positionner dans la base par exemple dans
    HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run

    Merci

  18. #18
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 048
    Points : 23 810
    Points
    23 810
    Par défaut
    A mon avis, ça ne marchera pas depuis une applet. En effet, la méthode userRoot() lève une SecurityException si un gestionaire de sécurité interdit runtimePermission("Preferences"). Ce qui doit être le cas avec une applet.

    ced

  19. #19
    Membre averti
    Avatar de Greg01
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mai 2002
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2002
    Messages : 297
    Points : 426
    Points
    426
    Par défaut
    Oulla, vous resortez mes vieux posts de mes débuts

    En tout cas, pour répondre à bibx, il n'est pas possible de parcourir toute la base de registre en Java, et encore moins avec une applet.
    Mais, dans certaine condition, c'est possible d'accéder à une partie de la base de registre, même avec une applet ! Pour info, à l'époque j'utilisais le JDK 1.4.0 ...

    Greg

  20. #20
    Nouveau membre du Club
    Inscrit en
    Avril 2002
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 41
    Points : 29
    Points
    29
    Par défaut
    Désolé je remonte ce vieux topic mais j'ai pas réussi à fairetourne le code de chawac:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import java.util.prefs.Preferences; 
     
    public class Test extends Object { 
     
       public static void main(String[] args) { 
          Preferences lPrf = Preferences.userRoot().node( "Test/My App" ); 
          lPrf.put( "My Key", "My Data" ); 
          System.out.println( lPrf.get( "My Key", "default" ) ); 
       } 
    }
    heu çà correspond à quoi?
    Perso je lui avais mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Preferences lPrf = Preferences.userRoot().node("HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion...");
    lPrf.get( "LaClé", "default" );
    Il m'a envoyé boulé en me disant "too long" sur la ligne node(...).
    Donc je lui ai mis le path de la clé dans le get en rajoutant "/LaClé", et j'ai mis node("") à la place, il me renvoi la chaîne de caractère "default"...

    Bon je veux juste récupérer la valeur de la clé moi

    Merci!

    PS: Le path de ma clé est plus long que çà hein, j'ai juste tronqué pour le topic en ajoutant 3 petits points

Discussions similaires

  1. [Système] PHP et Base de registre Windows
    Par clasix dans le forum Langage
    Réponses: 5
    Dernier message: 05/01/2007, 16h06
  2. Réponses: 4
    Dernier message: 30/01/2006, 20h50
  3. Réponses: 4
    Dernier message: 02/11/2005, 17h24
  4. Modifier la base de registre Windows
    Par Janitrix dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 18/10/2005, 20h17
  5. Accès à la base de registre windows à distance
    Par xavame dans le forum Sécurité
    Réponses: 4
    Dernier message: 13/07/2005, 16h23

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