続 レジストリキーの列挙

昨日のregistry_key_iteratorですが、

class registry_key : boost::noncopyable
{
public:
    registry_key(
        ::HKEY parent, const std::string& sub_key, ::REGSAM sam)

    boost::optional<std::string> sub_key_name(::DWORD index) const;
};

のようなレジストリキーのクラスを作成して、パブリックなメソッドsub_key_name()を使って実装することにしました。registry_key_iterator自体はインデックスの管理をするだけです。

ASIOのドライバ検索の場合、Boost.PropertyTreeのregistry parserを使ってもよいのですが、Boost.PropertyTreeはいわゆるDOMなので、基本的にはシステムプロパティ向けでなく、アプリケーションコンフィグ用だと思っています。Boost.PropertyTreeでHKEY_CLASSES_ROOT\CLSIDのような巨大なキーの配下を検索をしたら大変なことになりますからね。
registry_parser.hppからレジストリ操作部分だけ別に切り出して欲しいところです。