1 # hivex Python bindings
2 # Copyright (C) 2010 Red Hat Inc.
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 2 of the License, or
7 # (at your option) any later version.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22 srcdir = os.environ["srcdir"]
26 h = hivex.Hivex ("%s/../images/minimal" % srcdir,
33 h.node_add_child (root, "B")
35 b = h.node_get_child (root, "B")
39 { "key": "Key1", "t": 3, "value": "ABC" },
40 { "key": "Key2", "t": 3, "value": "DEF" }
42 h.node_set_values (b, values)
44 value1 = { "key": "Key3", "t": 3, "value": "GHI" }
45 h.node_set_value (b, value1)
47 value1 = { "key": "Key1", "t": 3, "value": "JKL" }
48 h.node_set_value (b, value1)
50 # In Python2, the data is returned as a string. In Python3, it is
51 # returned as bytes. Provide a function to convert either to a string.
53 if sys.version_info[0] == 2:
56 return str (data, "utf-8")
58 val = h.node_get_value (b, "Key1")
59 t_data = h.value_value (val)
61 assert to_string (t_data[1]) == "JKL"
63 val = h.node_get_value (b, "Key3")
64 t_data = h.value_value (val)
66 assert to_string (t_data[1]) == "GHI"