掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
CRegKey::EnumKeyがうまく機能しない(ATL) (ID:62883)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ATLライブラリのCRegKeyクラスを使ってレジストリを操作してみました。しかし、メンバ関数の一つENumKeyがうまく動作せず、三回目の呼び出しで必ず失敗します。 参照:http://msdn2.microsoft.com/ja-jp/library/0y1bzwwk.aspx //フォルダへの関連付け一覧を抽出 CRegKey reg; DWORD keyIndex = 0,length; char keyName[20][80]; reg.Open(HEKY_CLASSES_ROOT,"folder\\shell"); while(reg.ENumKey(keyIndex,keyName[keyIndex],&length) == ERROR_SUCCESS){ // keyName[keyIndex]を出力するコードがここに入る keyIndex++; } //細かい間違いがあったらすみません HKEY_CLASSES_ROOT\folder\shellにはサブキーが4つあるのですが、上のコードを実行するとkeyIndex==2となったところで関数がエラー値を返し(そこまでは正常に動作。エラー値はERROR_NO_MORE_ITEMSとは違う値)、ループが終了してしまいます。検索するキーの場所をHCR\folder\shell以外にしても、サブキーを2つまでしか検出できませんでした。またループや返り値判定を使わず手動で4回関数を呼び出しても、3回目の呼び出しでエラーになりました(バッファに文字列が格納されていない). わかる方がおられましたらお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.