Serial USB, leyendo registros de windows

Iniciado por Maurice_Lupin, 21 Diciembre 2011, 23:25 PM

0 Miembros y 1 Visitante están viendo este tema.

Maurice_Lupin

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. 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 (java) [Seleccionar]

import java.io.*;

public class RegQuery {

 private static final String REGQUERY_UTIL = "reg query ";
 private static final String REGSTR_TOKEN = "REG_SZ";
 private static final String REGDWORD_TOKEN = "REG_DWORD";

   
 private static final String SERIAL_USB = REGQUERY_UTIL +
  "HKLM\\SYSTEM\\CurrentControlSet\\Control\\DeviceClasses\\{a5dcbf10-6530-11d2-901f-00c04fb951ed}\\";
  //+ " /v DeviceInstance";



   public static String getSERIALS_USB() {
   try {
     Process process = Runtime.getRuntime().exec(SERIAL_USB);
     StreamReader reader = new StreamReader(process.getInputStream());
     String ret, cad[], su[];
     int p = -1;
     reader.start();
     process.waitFor();
     reader.join();
     String result = reader.getResult();      
     
     cad = result.split("\n");      
     ret = "";
     for(int i=0; i < cad.length; i++) {
         p = cad[i].indexOf("USB");
         if (p != -1 ) {
             cad[i] = cad[i].substring(p);              
             su = cad[i].split("#");
             ret += su[2]+"\n";
         }
     }            
     return ret;
   }
   catch (Exception e) {
     return null;
   }
 }
 


 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("Seriales :\n" + getSERIALS_USB());
 }
}



Saludos.
Un error se comete al equivocarse.