/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef _REGISTRYW9X_HXX_ #define _REGISTRYW9X_HXX_ #include "registry.hxx" #include "registry.hxx" //--------------------------------------- // constants //--------------------------------------- class RegistryKeyImplWin9x : public RegistryKeyImpl { public: //############################################ // Queries //############################################ /** The number of sub values of the key at hand @precond IsOpen = true @throws */ virtual size_t GetSubValueCount() const; /** The number of sub-keys of the key at hand @precond IsOpen = true @throws */ virtual size_t GetSubKeyCount() const; virtual StringListPtr GetSubKeyNames() const; virtual StringListPtr GetSubValueNames() const; /** Get the specified registry value @precond IsOpen = true */ virtual RegistryValue GetValue(const std::wstring& Name) const; /** Get the specified registry value, return the given default value if value not found @precond IsOpen = true */ virtual RegistryValue GetValue(const std::wstring& Name, const RegistryValue& Default) const; //############################################ // Commands //############################################ /** Open the registry key, has no effect if the key is already open @precond IsOpen = false @throws RegistryWriteAccessDenyException RegistryAccessDenyException */ virtual void Open(bool Writeable = true); /** Open the specified sub-key of the registry key at hand @precond IsOpen = true HasSubKey(Name) = true @throws RegistryIOException RegistryKeyNotFoundException RegistryAccessDeniedException */ virtual RegistryKey OpenSubKey(const std::wstring& Name, bool Writeable = true); /** Creates a new sub-key below the key at hand @precond IsOpen = true IsWriteable = true @throws RegistryIOException RegistryWriteAccessDenyException */ virtual RegistryKey CreateSubKey(const std::wstring& Name); /** Deletes a sub-key below the key at hand, the key must not have sub-keys @precond IsOpen = true IsWriteable = true @throws RegistryIOException RegistryWriteAccessDenyException */ virtual void DeleteSubKey(const std::wstring& Name); /** Deletes a sub-key below the key at hand with all its sub-keys @precond IsOpen = true IsWriteable = true; @throws RegistryIOException RegistryWriteAccessDenyException */ virtual void DeleteSubKeyTree(const std::wstring& Name); /** Delete the specified value @precond IsOpen = true IsWriteable = true HasValue(Name) = true @throws RegistryIOException RegistryWriteAccessDeniedException RegistryValueNotFoundException */ virtual void DeleteValue(const std::wstring& Name); /** Set the specified registry value @precond IsOpen = true IsWriteable = true @throws RegistryIOException RegistryWriteAccessDenyException */ virtual void SetValue(const RegistryValue& Value); //############################################ // Creation // // only possible through WindowsRegistry class //############################################ protected: /** Create instance and open the specified Registry key @throws RegistryWriteAccessDenyException RegistryAccessDenyException RegistryKeyNotFoundException */ RegistryKeyImplWin9x(HKEY RootKey, const std::wstring& KeyName); /** Create instance and open the specified Registry key @throws RegistryWriteAccessDenyException RegistryAccessDenyException RegistryKeyNotFoundException */ RegistryKeyImplWin9x(HKEY RootKey); /** Create an instances of the specified Registry key, the key is assumed to be already opened. */ RegistryKeyImplWin9x(HKEY RootKey, HKEY SubKey, const std::wstring& KeyName, bool Writeable = true); // prevent copy/assignment private: RegistryKeyImplWin9x(const RegistryKeyImplWin9x&); RegistryKeyImplWin9x& operator=(const RegistryKeyImplWin9x&); //###################################### // Friend declarations //###################################### friend class WindowsRegistry; }; #endif