Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Maurice_Lupin en 21 Diciembre 2011, 23:25 pm



Título: Serial USB, leyendo registros de windows
Publicado por: Maurice_Lupin en 21 Diciembre 2011, 23:25 pm
Tratando de obtener el serial de un USB evitando utilizar la api de windows, en java, googleando encontre un ejm acceder a registros de windows desde java (http://chuwiki.chuidiang.org/index.php?title=Acceder_a_registro_de_Windows_desde_Java). Modifique y resultó esto, el problema es que los registros no se actualizan cuando quitas un USB  :o bueno quizá alguien tenga alguna sugerencia.

Código
  1. import java.io.*;
  2.  
  3. public class RegQuery {
  4.  
  5.  private static final String REGQUERY_UTIL = "reg query ";
  6.  private static final String REGSTR_TOKEN = "REG_SZ";
  7.  private static final String REGDWORD_TOKEN = "REG_DWORD";
  8.  
  9.  
  10.  private static final String SERIAL_USB = REGQUERY_UTIL +
  11.   "HKLM\\SYSTEM\\CurrentControlSet\\Control\\DeviceClasses\\{a5dcbf10-6530-11d2-901f-00c04fb951ed}\\";
  12.   //+ " /v DeviceInstance";
  13.  
  14.  
  15.  
  16.    public static String getSERIALS_USB() {
  17.    try {
  18.      Process process = Runtime.getRuntime().exec(SERIAL_USB);
  19.      StreamReader reader = new StreamReader(process.getInputStream());
  20.      String ret, cad[], su[];
  21.      int p = -1;
  22.      reader.start();
  23.      process.waitFor();
  24.      reader.join();
  25.      String result = reader.getResult();      
  26.  
  27.      cad = result.split("\n");      
  28.      ret = "";
  29.      for(int i=0; i < cad.length; i++) {
  30.          p = cad[i].indexOf("USB");
  31.          if (p != -1 ) {
  32.              cad[i] = cad[i].substring(p);              
  33.              su = cad[i].split("#");
  34.              ret += su[2]+"\n";
  35.          }
  36.      }            
  37.      return ret;
  38.    }
  39.    catch (Exception e) {
  40.      return null;
  41.    }
  42.  }
  43.  
  44.  
  45.  
  46.  static class StreamReader extends Thread {
  47.    private InputStream is;
  48.    private StringWriter sw;
  49.  
  50.    StreamReader(InputStream is) {
  51.      this.is = is;
  52.      sw = new StringWriter();
  53.    }
  54.  
  55.    public void run() {
  56.      try {
  57.        int c;
  58.        while ((c = is.read()) != -1)
  59.          sw.write(c);
  60.        }
  61.        catch (IOException e) { ; }
  62.      }
  63.  
  64.    String getResult() {
  65.      return sw.toString();
  66.    }
  67.  }
  68.  
  69.  public static void main(String s[]) {
  70.  
  71.    System.out.println("Seriales :\n" + getSERIALS_USB());
  72.  }
  73. }
  74.  
  75.  

Saludos.