HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0812
葡萄色レジストリエントリ(値)の数の不一致2解決


葡萄色

リンク

2015/8/12(Wed) 23:23:48|NO.70676

こんばんは。葡萄色です。
今回はレジストリエントリ(値)の数が不一致する件について質問させていただきます。

レジストリのあるキーに存在する値を列挙するためにRegEnumValue関数で値の名前を列挙したあとに、RegQueryValueEx関数で値の名前を元に1つ1つ値のデータを取得するプログラムを組みました。
正しく値が列挙できているか確かめるためにレジストリエディタでそのキーを確かめたところ、明らかに値の数が一致していませんでした。
環境によると思いますが、私の環境では列挙できたのが31個に対し、実際は49個でした。
念のためRegQueryInfoKey関数で値の数を取得しましたが、31個と、列挙できた個数と一致しました。
何故このような現象が起きるのか、原因が分かりません。
ご教授願います。
組んだプログラムは以下の通りです。


#uselib "advapi32" #func RegCloseKey "RegCloseKey" sptr #func RegEnumValue "RegEnumValueA" sptr, sptr, sptr, sptr, nullptr, nullptr, nullptr, nullptr #func RegOpenKeyEx "RegOpenKeyExA" sptr, sptr, nullptr, sptr, sptr #func RegQueryInfoKey "RegQueryInfoKeyA" sptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, sptr, nullptr, nullptr, nullptr, nullptr #func RegQueryValueEx "RegQueryValueExA" sptr, sptr, nullptr, nullptr, sptr, sptr dim n dim sCnt dim hKey RegOpenKeyEx $80000002, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\MCI Extensions", $1, varptr(hKey) assert sdim name, , 64 sdim data, , 64 repeat dupptr size, varptr(name.cnt) - 16, 4 RegEnumValue hKey, cnt, varptr(name.cnt), varptr(size) if stat { if stat = 259 : sCnt = cnt : break logmes "ERROR" } loop sdim size repeat sCnt RegQueryValueEx hKey, varptr(name.cnt), 0, varptr(size) if stat : data.cnt = "ERROR" : continue RegQueryValueEx hKey, varptr(name.cnt), varptr(data.cnt), varptr(size) if stat : data.cnt = "ERROR" : continue loop RegQueryInfoKey hKey, varptr(n) if stat : logmes "ERROR" RegClosekey hKey font "" repeat sCnt mes name.cnt + " = " + data.cnt loop title "" + sCnt + ":" + n



この記事に返信する


tds12

リンク

2015/8/13(Thu) 00:05:11|NO.70678

64bitWindowsであれば、
レジストリのリダイレクトが働いている可能性があります。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa384232(v=vs.85).aspx



葡萄色

リンク

2015/8/13(Thu) 01:18:25|NO.70681

>>tds12さん
返信ありがとうございます。
貼って頂いたURLを元にRegOpenKeyEx関数の第4パラメータ(samDesired)に$1に加え$100を指定したところ、上手く列挙することができました。

また、そのURLのページの日本語版がありましたので、後の人の為に日本語版のURLを下に貼っておきます。
https://msdn.microsoft.com/ja-jp/library/aa384232(v=vs.85).aspx


本当にありがとうございます。



ONION software Copyright 1997-2023(c) All rights reserved.