Bonjours,
Je veux accéder à un key dans la base de registre windows avec un programme java, sans passer par l'api JNI, comment je procède ?
Et merci d'avance.
Bonjours,
Je veux accéder à un key dans la base de registre windows avec un programme java, sans passer par l'api JNI, comment je procède ?
Et merci d'avance.
En construisant la ligne de commande appropriée (à bas e de reg query) via un ProcessBuilder, en exécutant le Process récupéré tout en traitant bien sur le flux de retour.
Cf http://blog.developpez.com/adiguba/p...s-plus-simple/
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.
Merci pour l'aide ça m'a aidé beaucoup,
Mais j'ai un pb lorsque je fait l'appel de reg query voila la méthode que j'ai fait :
la console affiche l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 try { Process p = new ProcessBuilder("reg query \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\" /v proxyserver").start(); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); } catch (IOException e) { System.out.println(e); e.printStackTrace(); }
Ce que j'ai pas compris c'est que lorsque je prends la chaine : "reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v proxyserver" et je le met dans la console de windows il affiche bien le résultat ip proxy et port, la chaine de reg query est correcte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 java.io.IOException: Cannot run program "reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v proxyserver": CreateProcess error=2, The system cannot find the file specified at java.lang.ProcessBuilder.start(Unknown Source) at testProxy.main(testProxy.java:27) Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified at java.lang.ProcessImpl.create(Native Method) at java.lang.ProcessImpl.<init>(Unknown Source) at java.lang.ProcessImpl.start(Unknown Source)java.io.IOException: Cannot run program "reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v proxyserver": CreateProcess error=2, The system cannot find the file specified ... 2 more
Aussi lorsque je la remplace par ipconfig dans le code java ça marche, la commande est exécuté !!
C'est quoi l'erreur avec reg query ?? et merci.
Dans la déclaration du ProcessBuilder il faut séparer les divers éléments de la ligne de commande.
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 try { Process p = new ProcessBuilder( "reg", "query", "\"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\"", "/v", "proxyserver").start(); BufferedReader in = new BufferedReader(new InputStreamReader(p .getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { System.out.println(inputLine); } } catch (IOException e) { // TODO Bloc catch auto-généré e.printStackTrace(); }
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.
Enfin si c'est la config du proxy que tu cherches, il est parfaitement possible de la récupérer en pur java:
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
37
38
39
40
41
42
43
44
45
46 package proxy; import java.util.List; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.ProxySelector; import java.net.URI; import java.util.Iterator; public class testProxy { public static void main(String[] args) { try { System.setProperty("java.net.useSystemProxies","true"); List<Proxy> l = ProxySelector.getDefault().select( new URI("http://www.yahoo.com/")); for (Iterator<Proxy> iter = l.iterator(); iter.hasNext(); ) { Proxy proxy = iter.next(); System.out.println("proxy hostname : " + proxy.type()); InetSocketAddress addr = (InetSocketAddress) proxy.address(); if(addr == null) { System.out.println("No Proxy"); } else { System.out.println("proxy hostname : " + addr.getHostName()); System.out.println("proxy port : " + addr.getPort()); } } } catch (Exception e) { e.printStackTrace(); } } }
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.
Parfait pour les deux solutions, et merci ça me permet d'économiser beaucoup de temps perdu dans les recherches
Juste une remarque pour la deuxième solution, je pense que ça fonctionne que sur Windows, car j'ai testé la même méthode dans un poste client linux où un proxy distant est configuré et ça donne pas de résultats, il m'affiche DIRECT No Proxy !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager