| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: msw/registry.h
- // Purpose: interface of wxRegKey
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- @class wxRegKey
- wxRegKey is a class representing the Windows registry (it is only available
- under Windows). One can create, query and delete registry keys using this
- class.
- The Windows registry is easy to understand. There are five registry keys,
- namely:
- @li @c HKEY_CLASSES_ROOT (HKCR)
- @li @c HKEY_CURRENT_USER (HKCU)
- @li @c HKEY_LOCAL_MACHINE (HKLM)
- @li @c HKEY_CURRENT_CONFIG (HKCC)
- @li @c HKEY_USERS (HKU)
- After creating a key, it can hold a value. The values can be:
- @li String Value
- @li Binary Value
- @li DWORD Value
- @li Multi String Value
- @li Expandable String Value
- @onlyfor{wxmsw}
- @b Example:
- @code
- // This assume that the key already exists, use HasSubKey() to check
- // for the key existence if necessary.
- wxRegKey key(wxRegKey::HKLM, "Software\\MyKey");
- // Create a new value "MyValue" and set it to 12.
- key.SetValue("MyValue", 12);
- // Read the value back.
- long value;
- key.QueryValue("MyValue", &value);
- wxMessageBox(wxString::Format("%d", value), "Registry Value", wxOK);
- // Get the number of subkeys and enumerate them.
- size_t subkeys;
- key.GetKeyInfo(&subkeys, NULL, NULL, NULL);
- wxString key_name;
- key.GetFirstKey(key_name, 1);
- for(int i = 0; i < subkeys; i++)
- {
- wxMessageBox(key_name, "Subkey Name", wxOK);
- key.GetNextKey(key_name, 1);
- }
- @endcode
- @library{wxbase}
- @category{cfg}
- */
- class wxRegKey
- {
- public:
- /**
- Default constructor, initializes to @c HKEY_CLASSES_ROOT.
- The @a viewMode parameter is new since wxWidgets 2.9.2.
- */
- wxRegKey(WOW64ViewMode viewMode = WOW64ViewMode_Default);
- /**
- The constructor to set the full name of the key.
- The @a viewMode parameter is new since wxWidgets 2.9.2.
- */
- wxRegKey(const wxString& strKey,
- WOW64ViewMode viewMode = WOW64ViewMode_Default);
- /**
- The constructor to set the full name of the key using one of the
- standard keys, that is, HKCR, HKCU, HKLM, HKUSR, HKPD, HKCC or HKDD.
- The @a viewMode parameter is new since wxWidgets 2.9.2.
- */
- wxRegKey(StdKey keyParent, const wxString& strKey,
- WOW64ViewMode viewMode = WOW64ViewMode_Default);
- /**
- The constructor to set the full name of the key under a previously
- created parent. The registry view is inherited from the parent.
- */
- wxRegKey(const wxRegKey& keyParent, const wxString& strKey);
- /**
- Access modes for wxRegKey.
- */
- enum AccessMode
- {
- Read, ///< Read-only
- Write ///< Read and Write
- };
- /**
- The standard registry key enumerator.
- */
- enum StdKey
- {
- HKCR, ///< HKEY_CLASSES_ROOT
- HKCU, ///< HKEY_CURRENT_USER
- HKLM, ///< HKEY_LOCAL_MACHINE
- HKUSR, ///< HKEY_USERS
- HKPD, ///< HKEY_PERFORMANCE_DATA (Windows NT and 2K only)
- HKCC, ///< HKEY_CURRENT_CONFIG
- HKDD, ///< HKEY_DYN_DATA (Windows 95 and 98 only)
- HKMAX
- };
- /**
- The value type enumerator.
- */
- enum ValueType
- {
- Type_None, ///< No value type
- Type_String, ///< Unicode null-terminated string
- Type_Expand_String, ///< Unicode null-terminated string
- ///< (with environment variable references)
- Type_Binary, ///< Free form binary
- Type_Dword, ///< 32-bit number
- Type_Dword_little_endian, ///< 32-bit number (same as Type_Dword)
- Type_Dword_big_endian, ///< 32-bit number
- Type_Link, ///< Symbolic Link (Unicode)
- Type_Multi_String, ///< Multiple Unicode strings
- Type_Resource_list, ///< Resource list in the resource map
- Type_Full_resource_descriptor, ///< Resource list in the hardware description
- Type_Resource_requirements_list ///<
- };
- /**
- Used to determine how the registry will be viewed, either as
- 32-bit or 64-bit.
- @since 2.9.2
- */
- enum WOW64ViewMode
- {
- /**
- Uses 32-bit registry for 32-bit applications and
- 64-bit registry for 64-bit ones.
- */
- WOW64ViewMode_Default,
- /**
- Can be used in 64-bit apps to access the 32-bit registry,
- has no effect (i.e. treated as default) in 32-bit apps.
- */
- WOW64ViewMode_32,
- /**
- Can be used in 32-bit apps to access the 64-bit registry,
- has no effect (i.e. treated as default) in 64-bit apps.
- */
- WOW64ViewMode_64
- };
- /**
- Closes the key.
- */
- void Close();
- /**
- Copy the entire contents of the key recursively to another location
- using the name. Returns @true if successful.
- */
- bool Copy(const wxString& szNewName);
- /**
- Copy the entire contents of the key recursively to another location
- using the key. Returns @true if successful.
- */
- bool Copy(wxRegKey& keyDst);
- /**
- Copy the value to another key, possibly changing its name. By default
- it will remain the same. Returns @true if successful.
- */
- bool CopyValue(const wxString& szValue, wxRegKey& keyDst,
- const wxString& szNewName = wxEmptyString);
- /**
- Creates the key. Will fail if the key already exists and @a bOkIfExists
- is @false. Returns @true if successful.
- */
- bool Create(bool bOkIfExists = true);
- /**
- Deletes the subkey with all its subkeys and values recursively.
- */
- void DeleteKey(const wxString& szKey);
- /**
- Deletes this key and all its subkeys and values recursively.
- */
- void DeleteSelf();
- /**
- Deletes the named value or use an empty string argument to remove the
- default value of the key.
- */
- void DeleteValue(const wxString& szKey);
- /**
- Returns @true if the key exists.
- */
- bool Exists() const;
- /**
- Write the contents of this key and all its subkeys to the given file.
- (The file will not be overwritten; it's an error if it already exists.)
- Note that we export the key in REGEDIT4 format, not RegSaveKey() binary
- format nor the newer REGEDIT5. Returns @true if successful.
- */
- bool Export(const wxString& filename) const;
- /**
- Write the contents of this key and all its subkeys to the opened stream.
- Returns @true if successful.
- */
- bool Export(wxOutputStream& ostr) const;
- /**
- Gets the first key. Returns @true if successful.
- */
- bool GetFirstKey(wxString& strKeyName, long& lIndex);
- /**
- Gets the first value of this key. Returns @true if successful.
- */
- bool GetFirstValue(wxString& strValueName, long& lIndex);
- /**
- Gets information about the key. Returns @true if successful.
- @param pnSubKeys
- The number of subkeys.
- @param pnMaxKeyLen
- The maximum length of the subkey name.
- @param pnValues
- The number of values.
- @param pnMaxValueLen
- The maximum length of a value.
- */
- bool GetKeyInfo(size_t* pnSubKeys, size_t* pnMaxKeyLen,
- size_t* pnValues, size_t* pnMaxValueLen) const;
- /**
- Gets the name of the registry key.
- */
- wxString GetName(bool bShortPrefix = true) const;
- /**
- Retrieves the registry view used by this key.
- @since 2.9.2
- @return The registry view given at the object's construction.
- */
- WOW64ViewMode GetView() const { return m_viewMode; }
- /**
- Gets the next key. Returns @true if successful.
- */
- bool GetNextKey(wxString& strKeyName, long& lIndex) const;
- /**
- Gets the next key value for this key. Returns @true if successful.
- */
- bool GetNextValue(wxString& strValueName, long& lIndex) const;
- /**
- Gets the value type.
- */
- ValueType GetValueType(const wxString& szValue) const;
- /**
- Returns @true if given subkey exists.
- */
- bool HasSubKey(const wxString& szKey) const;
- /**
- Returns @true if any subkeys exist.
- */
- bool HasSubkeys() const;
- /**
- Returns @true if the value exists.
- */
- bool HasValue(const wxString& szValue) const;
- /**
- Returns @true if any values exist.
- */
- bool HasValues() const;
- /**
- Returns @true if this key is empty, nothing under this key.
- */
- bool IsEmpty() const;
- /**
- Returns @true if the value contains a number.
- */
- bool IsNumericValue(const wxString& szValue) const;
- /**
- Returns @true if the key is opened.
- */
- bool IsOpened() const;
- /**
- Explicitly opens the key. This method also allows the key to be opened
- in read-only mode by passing wxRegKey::Read instead of default
- wxRegKey::Write parameter. Returns @true if successful.
- */
- bool Open(AccessMode mode = Write);
- /**
- Assignment operator to set the default value of the key.
- */
- wxRegKey& operator=(const wxString& strValue);
- /**
- Return the default value of the key.
- */
- wxString QueryDefaultValue() const;
- /**
- Retrieves the raw string value. Returns @true if successful.
- An empty @a szValue queries the default/unnamed key value.
- */
- bool QueryRawValue(const wxString& szValue, wxString& strValue) const;
- /**
- Retrieves the raw or expanded string value. Returns @true if successful.
- An empty @a szValue queries the default/unnamed key value.
- */
- bool QueryValue(const wxString& szValue, wxString& strValue, bool raw) const;
- /**
- Retrieves the numeric value. Returns @true if successful.
- An empty @a szValue queries the default/unnamed key value.
- */
- bool QueryValue(const wxString& szValue, long* plValue) const;
- /**
- Retrieves the binary structure. Returns @true if successful.
- An empty @a szValue queries the default/unnamed key value.
- */
- bool QueryValue(const wxString& szValue, wxMemoryBuffer& buf) const;
- /**
- Renames the key. Returns @true if successful.
- */
- bool Rename(const wxString& szNewName);
- /**
- Renames a value. Returns @true if successful.
- */
- bool RenameValue(const wxString& szValueOld,
- const wxString& szValueNew);
- /**
- Preallocate some memory for the name. For wxRegConfig usage only.
- */
- void ReserveMemoryForName(size_t bytes);
- /**
- Set or change the HKEY handle.
- */
- void SetHkey(WXHKEY hKey);
- /**
- Set the full key name. The name is absolute. It should start with
- HKEY_xxx.
- */
- void SetName(const wxString& strKey);
- /**
- Set the name relative to the parent key
- */
- void SetName(StdKey keyParent, const wxString& strKey);
- /**
- Set the name relative to the parent key
- */
- void SetName(const wxRegKey& keyParent, const wxString& strKey);
- /**
- Sets the given @a szValue which must be numeric. If the value doesn't
- exist, it is created. Returns @true if successful.
- An empty @a szValue sets the default/unnamed key value.
- */
- bool SetValue(const wxString& szValue, long lValue);
- /**
- Sets the given @a szValue which must be string. If the value doesn't
- exist, it is created. Returns @true if successful.
- An empty @a szValue sets the default/unnamed key value.
- */
- bool SetValue(const wxString& szValue, const wxString& strValue);
- /**
- Sets the given @a szValue which must be binary. If the value doesn't
- exist, it is created. Returns @true if successful.
- An empty @a szValue sets the default/unnamed key value.
- */
- bool SetValue(const wxString& szValue, const wxMemoryBuffer& buf);
- };
|