Lire les clés registre sous Windows [Java] [Résolu]

sarahjtm 29 Messages postés mercredi 1 octobre 2008Date d'inscription 15 janvier 2012 Dernière intervention - 5 janv. 2010 à 18:49 - Dernière réponse : sarahjtm 29 Messages postés mercredi 1 octobre 2008Date d'inscription 15 janvier 2012 Dernière intervention
- 6 janv. 2010 à 15:46
Bonjour,
et désolé pour le double post :(
Mon logiciel nécéssite le répertoire d'installation de Steam.exe, en effet il y a un clé registre qui indique le répertoire d'installation de Steam.
J'aimerai donc savoir comment lire cette clé (dont la valeur est par exemple : D:\Steam\Steam.exe)
pour l'intégrer dans mon code source afin de trouver SYSTEMATIQUEMENT le fichier Steam.exe dans n'importe quel ordinateur (si il est installé bien sûr :) ).
Si j'ai bien compris c'est une question API ou un truc du genre :).
Voilà donc en rentrant Reg query "HKEY_CLASSES_ROOT\steam\Shell\Open\Command" dans mon invite de commande,
j'obtiens ceci :
HKEY_CLASSES_ROOT\steam\Shell\Open\Command
REG_SZ "D:\Steam\steam.exe" "%1"

Ce qui m'interesse c'est le "D:\Steam\steam.exe (le repertoire d'installation de Steam).
et peux tu me donner un moyen d'intégrer juste "D:\Steam\steam.exe" dans mon programme Java, de façon à trouver systematiquement l'emplacement du répertoire d'installation de Steam
Cordialement,
Merci par avance :)
SoGeek.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_jojolemariole 519 Messages postés mercredi 21 mars 2007Date d'inscription 19 décembre 2016 Dernière intervention - 6 janv. 2010 à 10:12
3
Merci
Re,

/ve à la fin de ta commande pour demander la clé par défaut.

Ensuite il faut te baser sur le mot-clé REG_SZ qui est le type de valeur.
Tu prends simplement ce qui suit. En java tu as les méthode indexOf(String) et substring(int) qui vont t'aider à faire ça.

Sinon tu peux aussi tirer profiter du fait que le chemin se termine par \steam.exe pour le localiser dans le résultat.

Merci cs_jojolemariole 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_jojolemariole
Meilleure réponse
sarahjtm 29 Messages postés mercredi 1 octobre 2008Date d'inscription 15 janvier 2012 Dernière intervention - 6 janv. 2010 à 12:38
3
Merci
Bonjour Jojolemariole en effet je maitrise bien indexOf et Substring, mais je n'arrive pas à executer
Reg query "HKEY_CLASSES_ROOT\steam\Shell\Open\Command"

en Java, du coup je ne trouve aucun resultat

j'ai essayé

import java.io.IOException;

public class TestReg {
{ Runtime r = Runtime.getRuntime();
try {
Process p = r.getRuntime().exec("Reg query HKEY_CLASSES_ROOT\steam\Shell\Open\Command /ve");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

Donc comment faire pour executer des commandes DOS, mais en Java :)?
Cordialement,
(et je sais que je suis lourd, mais merci d'avance.)
SoGeek.

Merci sarahjtm 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de sarahjtm
Meilleure réponse
cs_jojolemariole 519 Messages postés mercredi 21 mars 2007Date d'inscription 19 décembre 2016 Dernière intervention - 6 janv. 2010 à 14:09
3
Merci
Sur ce même site il y a un code source dont je t'ai donné le lien, l'as-tu essayé?

import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;

public class RegPathAdobe {

private static final String REGQUERY_UTIL = "reg query ";

private static final String REGSTR_TOKEN = "REG_SZ";

// quand on connait la valeur de la clé
// private static final String ADOBE_NAME_CMD = REGQUERY_UTIL +
// ""HKLM\\Software\\Adobe\\Acrobat Reader\\7.0\\Installer" /v Path";

// dans le cas contraire
private static final String ADOBE_NAME_CMD = REGQUERY_UTIL
+ ""HKLM\\Software\\Adobe\\Acrobat Reader\\7.0\\InstallPath"";

public static String getAdobePath() {
try {
Process process = Runtime.getRuntime().exec(ADOBE_NAME_CMD);
StreamReader reader = new StreamReader(process.getInputStream());

reader.start();
process.waitFor();
reader.join();

String result = reader.getResult();

int p = result.indexOf(REGSTR_TOKEN);

if (p == -1) {
return null;
}

return result.substring(p + REGSTR_TOKEN.length()).trim();
} catch (Exception e) {
return null;
}
}

//parser du résultat
static class StreamReader extends Thread {
private InputStream is;

private StringWriter sw;

StreamReader(InputStream is) {
this.is = is;
sw = new StringWriter();
}

public void run() {
try {
int c;
while ((c = is.read()) != -1)
sw.write(c);
} catch (IOException e) {
;
}
}

String getResult() {
return sw.toString();
}
}

public static void main(String s[]) {
System.out.println(getAdobePath());
}

}

Merci cs_jojolemariole 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_jojolemariole
Meilleure réponse
sarahjtm 29 Messages postés mercredi 1 octobre 2008Date d'inscription 15 janvier 2012 Dernière intervention - 6 janv. 2010 à 15:46
3
Merci
Ouais j'ai essayé mais je ne vois pas ce qu'il faut que je copie dans mon code source et ce qu'il faut que je modifie sur le code source du lien (la racine du fichier du registre certainement ^^)

Merci sarahjtm 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de sarahjtm

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.