mirror of
https://github.com/kasmtech/KasmVNC.git
synced 2024-12-01 04:23:22 +01:00
259f1055cb
Provides safety against them accidentally becoming negative because of bugs in the calculations. Also does the same to CharArray and friends as they were strongly connection to the stream objects.
113 lines
3.5 KiB
C++
113 lines
3.5 KiB
C++
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
|
|
*
|
|
* This is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This software is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this software; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
|
* USA.
|
|
*/
|
|
// -=- Registry.h
|
|
|
|
// C++ wrappers around the Win32 Registry APIs
|
|
|
|
#ifndef __RFB_WIN32_REGISTRY_H__
|
|
#define __RFB_WIN32_REGISTRY_H__
|
|
|
|
#include <windows.h>
|
|
#include <rfb_win32/Security.h>
|
|
#include <rfb/util.h>
|
|
|
|
namespace rfb {
|
|
|
|
namespace win32 {
|
|
|
|
class RegKey {
|
|
public:
|
|
// No key open
|
|
RegKey();
|
|
|
|
// Duplicate the specified existing key
|
|
RegKey(const HKEY k);
|
|
RegKey(const RegKey& k);
|
|
|
|
// Calls close() internally
|
|
~RegKey();
|
|
|
|
void setHKEY(HKEY key, bool freeKey);
|
|
private:
|
|
RegKey& operator=(const RegKey& k);
|
|
HKEY& operator=(const HKEY& k);
|
|
public:
|
|
|
|
// Returns true if key was created, false if already existed
|
|
bool createKey(const RegKey& root, const TCHAR* name);
|
|
|
|
// Opens key if it exists, or raises an exception if not
|
|
void openKey(const RegKey& root, const TCHAR* name, bool readOnly=false);
|
|
|
|
// Set the (discretionary) access control list for the key
|
|
void setDACL(const PACL acl, bool inheritFromParent=true);
|
|
|
|
// Closes current key, if required
|
|
void close();
|
|
|
|
// Delete a subkey/value
|
|
void deleteKey(const TCHAR* name) const;
|
|
void deleteValue(const TCHAR* name) const;
|
|
|
|
|
|
// Block waiting for a registry change, OR return immediately and notify the
|
|
// event when there is a change, if specified
|
|
void awaitChange(bool watchSubTree, DWORD filter, HANDLE event=0) const;
|
|
|
|
void setExpandString(const TCHAR* valname, const TCHAR* s) const;
|
|
void setString(const TCHAR* valname, const TCHAR* s) const;
|
|
void setBinary(const TCHAR* valname, const void* data, size_t length) const;
|
|
void setInt(const TCHAR* valname, int i) const;
|
|
void setBool(const TCHAR* valname, bool b) const;
|
|
|
|
TCHAR* getString(const TCHAR* valname) const;
|
|
TCHAR* getString(const TCHAR* valname, const TCHAR* def) const;
|
|
|
|
void getBinary(const TCHAR* valname, void** data, size_t* length) const;
|
|
void getBinary(const TCHAR* valname, void** data, size_t* length, void* def, size_t deflength) const;
|
|
|
|
int getInt(const TCHAR* valname) const;
|
|
int getInt(const TCHAR* valname, int def) const;
|
|
|
|
bool getBool(const TCHAR* valname) const;
|
|
bool getBool(const TCHAR* valname, bool def) const;
|
|
|
|
TCHAR* getRepresentation(const TCHAR* valname) const;
|
|
|
|
bool isValue(const TCHAR* valname) const;
|
|
|
|
// Get the name of value/key number "i"
|
|
// If there are fewer than "i" values then return 0
|
|
// NAME IS OWNED BY RegKey OBJECT!
|
|
const TCHAR* getValueName(int i);
|
|
const TCHAR* getKeyName(int i);
|
|
|
|
operator HKEY() const;
|
|
protected:
|
|
HKEY key;
|
|
bool freeKey;
|
|
TCharArray valueName;
|
|
DWORD valueNameBufLen;
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
#endif // __RFB_WIN32_REG_CONFIG_H__
|