続 レジストリキーの列挙
昨日の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からレジストリ操作部分だけ別に切り出して欲しいところです。