OSDN Git Service

Registry functions: Optionally allow caller to force 32-bit registry view or 64-bit...
[mutilities/MUtilities.git] / include / MUtils / Registry.h
1 ///////////////////////////////////////////////////////////////////////////////
2 // MuldeR's Utilities for Qt
3 // Copyright (C) 2004-2016 LoRd_MuldeR <MuldeR2@GMX.de>
4 //
5 // This library is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU Lesser General Public
7 // License as published by the Free Software Foundation; either
8 // version 2.1 of the License, or (at your option) any later version.
9 //
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 // Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with this library; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18 //
19 // http://www.gnu.org/licenses/lgpl-2.1.txt
20 //////////////////////////////////////////////////////////////////////////////////
21
22 #pragma once
23
24 //MUtils
25 #include <MUtils/Global.h>
26
27 ///////////////////////////////////////////////////////////////////////////////
28
29 namespace MUtils
30 {
31         namespace Registry
32         {
33                 //Regsitry root
34                 typedef enum
35                 {
36                         root_classes = 0,
37                         root_user    = 1,
38                         root_machine = 2,
39                 }
40                 reg_root_t;
41
42                 //Regsitry access
43                 typedef enum
44                 {
45                         access_readonly  = 0,
46                         access_writeonly = 1,
47                         access_readwrite = 2,
48                         access_enumerate = 3
49                 }
50                 reg_access_t;
51
52                 //Regsitry scope
53                 typedef enum
54                 {
55                         scope_default = 0,
56                         scope_wow_x32 = 1,
57                         scope_wow_x64 = 2
58                 }
59                 reg_scope_t;
60
61                 //Forward declaration
62                 namespace Internal
63                 {
64                         class RegistryKeyPrivate;
65                 }
66
67                 //Registry key class
68                 class MUTILS_API RegistryKey
69                 {
70                 public:
71                         RegistryKey(const reg_root_t &rootKey, const QString &keyName, const reg_access_t &access, const reg_scope_t &scope = scope_default);
72                         ~RegistryKey(void);
73
74                         inline bool isOpen(void);
75
76                         bool value_write(const QString &valueName, const quint32 &value);
77                         bool value_write(const QString &valueName, const QString &value);
78
79                         bool value_read(const QString &valueName, quint32 &value) const;
80                         bool value_read(const QString &valueName, QString &value) const;
81
82                         bool enum_values (QStringList &list) const;
83                         bool enum_subkeys(QStringList &list) const;
84
85                 private:
86                         Internal::RegistryKeyPrivate *const p;
87                 };
88
89                 //Regsitry functions
90                 MUTILS_API bool reg_value_write (const reg_root_t &rootKey, const QString &keyName, const QString &valueName, const quint32 &value,           const reg_scope_t &scope = scope_default);
91                 MUTILS_API bool reg_value_write (const reg_root_t &rootKey, const QString &keyName, const QString &valueName, const QString &value,           const reg_scope_t &scope = scope_default);
92                 MUTILS_API bool reg_value_read  (const reg_root_t &rootKey, const QString &keyName, const QString &valueName, quint32       &value,           const reg_scope_t &scope = scope_default);
93                 MUTILS_API bool reg_value_read  (const reg_root_t &rootKey, const QString &keyName, const QString &valueName, QString       &value,           const reg_scope_t &scope = scope_default);
94                 MUTILS_API bool reg_key_exists  (const reg_root_t &rootKey, const QString &keyName,                                                           const reg_scope_t &scope = scope_default);
95                 MUTILS_API bool reg_key_delete  (const reg_root_t &rootKey, const QString &keyName, const bool &recusrive = true, const bool &ascend = false, const reg_scope_t &scope = scope_default);
96                 MUTILS_API bool reg_enum_values (const reg_root_t &rootKey, const QString &keyName, QStringList &list,                                        const reg_scope_t &scope = scope_default);
97                 MUTILS_API bool reg_enum_subkeys(const reg_root_t &rootKey, const QString &keyName, QStringList &list,                                        const reg_scope_t &scope = scope_default);
98         }
99 }
100
101 ///////////////////////////////////////////////////////////////////////////////