@@ -11,16 +11,29 @@ func New() *RegistryRepository {
11
11
return & RegistryRepository {}
12
12
}
13
13
14
- func (r * RegistryRepository ) GetStringValue (k registry.Key , path string , valueName string ) ( string , error ) {
15
- key , err := registry .OpenKey (k , path , registry . QUERY_VALUE )
14
+ func (r * RegistryRepository ) OpenKey (k registry.Key , path string , access uint32 , cb func ( key registry. Key ) error ) error {
15
+ key , err := registry .OpenKey (k , path , access )
16
16
if err != nil {
17
- return "" , err
17
+ return err
18
18
}
19
19
defer func (key registry.Key ) {
20
20
_ = key .Close ()
21
21
}(key )
22
22
23
- value , _ , err := key .GetStringValue (valueName )
23
+ return cb (key )
24
+ }
25
+
26
+ func (r * RegistryRepository ) GetStringValue (k registry.Key , path string , valueName string ) (string , error ) {
27
+ var value string
28
+ err := r .OpenKey (k , path , registry .QUERY_VALUE , func (key registry.Key ) error {
29
+ var err error
30
+ value , _ , err = key .GetStringValue (valueName )
31
+ if err != nil {
32
+ return err
33
+ }
34
+
35
+ return nil
36
+ })
24
37
if err != nil {
25
38
return "" , err
26
39
}
@@ -29,27 +42,15 @@ func (r *RegistryRepository) GetStringValue(k registry.Key, path string, valueNa
29
42
}
30
43
31
44
func (r * RegistryRepository ) SetStringValue (k registry.Key , path string , valueName string , value string ) error {
32
- key , err := registry .OpenKey (k , path , registry .QUERY_VALUE | registry .SET_VALUE )
33
- if err != nil {
34
- return err
35
- }
36
- defer func (key registry.Key ) {
37
- _ = key .Close ()
38
- }(key )
39
-
40
- return key .SetStringValue (valueName , value )
45
+ return r .OpenKey (k , path , registry .QUERY_VALUE | registry .SET_VALUE , func (key registry.Key ) error {
46
+ return key .SetStringValue (valueName , value )
47
+ })
41
48
}
42
49
43
50
func (r * RegistryRepository ) DeleteValue (k registry.Key , path string , valueName string ) error {
44
- key , err := registry .OpenKey (k , path , registry .QUERY_VALUE | registry .SET_VALUE )
45
- if err != nil {
46
- return err
47
- }
48
- defer func (key registry.Key ) {
49
- _ = key .Close ()
50
- }(key )
51
-
52
- return key .DeleteValue (valueName )
51
+ return r .OpenKey (k , path , registry .QUERY_VALUE | registry .SET_VALUE , func (key registry.Key ) error {
52
+ return key .DeleteValue (valueName )
53
+ })
53
54
}
54
55
55
56
func (r * RegistryRepository ) CreateKey (k registry.Key , path string ) error {
0 commit comments