package Ġio . github . vir us bear . reed Ċ Ċ import Ġcom . sun . j na . Pointer Ċ import Ġcom . sun . j na . platform . win 3 2 . Adv api 3 2 Ċ import Ġcom . sun . j na . platform . win 3 2 . Adv api 3 2 Util Ċ import Ġcom . sun . j na . platform . win 3 2 . Win NT Ċ import Ġcom . sun . j na . ptr . Int By Reference Ċ Ċ internal Ġobject ĠRegistry Ġ{ ĊĠĠĠ Ġfun Ġopen Key ( root : ĠRegistry Root , Ġpath : ĠString , Ġsam : ĠSam ): ĠH KEY Ġ= ĊĠĠĠĠĠĠĠ ĠAdv api 3 2 Util . registry GetKey ( root . h key , Ġpath , Ġsam . sam ). value ĊĊĠĠĠ Ġfun Ġclose Key ( h key : ĠH KEY ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAdv api 3 2 Util . registry Close Key ( h key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġkey Exists ( root : ĠRegistry Root , Ġpath : ĠString ): ĠBoolean Ġ= ĠAdv api 3 2 Util . registry Key Exists ( root . h key , Ġpath ) ĊĊĠĠĠ Ġfun Ġvalue Exists ( root : ĠRegistry Root , Ġpath : ĠString , Ġname : ĠString ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ ĠAdv api 3 2 Util . registry Value Exists ( root . h key , Ġpath , Ġname ) ĊĊĠĠĠ Ġfun Ġget Keys ( root : ĠRegistry Root , Ġpath : ĠString ): ĠList < String > Ġ= ĊĠĠĠĠĠĠĠ ĠAdv api 3 2 Util . registry Get Keys ( root . h key , Ġpath , ĠSam . KEY _ READ . sam ). toList () ĊĊĠĠĠ Ġfun Ġget Values ( root : ĠRegistry Root , Ġpath : ĠString ): ĠList < String > Ġ= Ġroot . use Key ( path , ĠSam . KEY _ READ ) Ġ{ Ġh key Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġkey Info Ġ= ĠAdv api 3 2 Util . registry Query Info Key ( h key , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġkey Info . lp c Values . value ). map NotNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Length Ġ= ĠInt By Reference ( key Info . lp c MaxValue Len . value Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠChar Array ( buffer Length . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAdv api 3 2 . INSTANCE . Reg EnumValue ( h key , Ġit , Ġbuffer , Ġbuffer Length , Ġnull , Ġnull , Ġnull Ġas ? ĠPointer , Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( status Ġ!= ĠWin NT . ERROR _ SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . concat ToString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget ValueType ( root : ĠRegistry Root , Ġpath : ĠString , Ġname : ĠString ): ĠRegistry ValueType < *> Ġ= ĊĠĠĠĠĠĠĠ Ġroot . use Key ( path , ĠSam . KEY _ READ ) Ġ{ Ġh key Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= ĠInt By Reference () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= ĠAdv api 3 2 . INSTANCE . Reg Query Value Ex ( h key , Ġname , Ġ 0 , Ġtype , Ġnull Ġas ? ĠPointer , Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( status Ġ!= ĠWin NT . ERROR _ SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" Registry . getValue Type Ġreturned Ġstatus Ġ$ status ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( type . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWin NT . REG _ DWORD Ġ-> ĠInt Registry Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWin NT . REG _ Q WORD Ġ-> ĠLong Registry Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWin NT . REG _ BINARY Ġ-> ĠBinary Registry Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWin NT . REG _ SZ , ĠWin NT . REG _ EXPAND _ SZ Ġ-> ĠString Registry Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWin NT . REG _ MULTI _ SZ Ġ-> ĠString Array Registry Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" No ĠRegistry ValueType Ġinstance Ġavailable Ġfor Ġtype Ġ${ type . value }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ }