windows - Reading undermapper i registret (JAVA)

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har travlt med at oprette et program, der vil læse dele af registreringsdatabasen for at finde ud af, hvilke USB-enheder der er blevet tilsluttet et Windows-system osv. Jeg har formået at oprette et program, hvad der viser værdierne, men hver person s registreringsdatabase vil indeholde forskellige oplysninger.


Jeg har forsøgt at kigge overalt for at finde hjælp/vejledning med kode for at kunne scanne en registreringsmappe og vise undermapper indenfor den. Jeg ved, at der er masser af kode til læsning af almindelige filplaceringer, men ingen vil arbejde med at forsøge at læse registreringsdatabasen .


Mappestedet, jeg forsøger at læse, er:


'\' HKLM \ SYSTEM \ CurrentControlSet \ Enum \ USBSTOR \


Jeg har formået at oprette et program, der vil læse værdierne fra ovennævnte placering, men jeg skal manuelt angive hver undermappe i koden.


Jeg håber jeg har forklaret, hvad jeg har brug for, undskyld hvis det er forvirrende


Tak på forhånd

Bedste reference


Jeg har brugt jRegistryKey.dll jRegistryKey.jar
Vær så god
ftp://ftp.heanet.ie/mirrors/sourceforge/j/project/jr/jregistrykey/manual/original/jreg\_key.pdfftp://ftp.heanet.ie/mirrors/sourceforge/j/project/jr/jregistrykey/manual/original/jreg\_key.pdf


f.eks. kode:


import ca.beq.util.win32.registry.RegistryKey;
import ca.beq.util.win32.registry.RegistryValue;
import ca.beq.util.win32.registry.RootKey;


opgørelse fra eksempel ---


RegistryKey r = new RegistryKey(RootKey.HKEY\_CURRENT\_USER, "Software");
if(r.hasSubkeys()) {
   Iterator i = r.subkeys();
   while(i.hasNext()) {
      RegistryKey x = (RegistryKey)i.next();
      System.out.println(x.toString());
   } // while
} // if





         RegistryKey r = new RegistryKey(RootKey.HKEY\_LOCAL\_MACHINE, "Software\app\update\Date");
          if (r.hasValue("LastSuccessfulUpdate")) {
            RegistryValue v = r.getValue("LastSuccessfulUpdate");
            updateDate = v.getStringValue();
            Date now = new Date(Long.parseLong(updateDate.trim() + "000"));


................
        }