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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0129
uレジストリキーを列挙するには4解決


u

リンク

2010/1/29(Fri) 20:07:54|NO.30229

レジストリのキーを列挙したいのですが以下のスクリプトだと何故か初めの一つしか取得できません。
見つけたモジュールはサブキーを必ず入力しなくてはならないものだったりしたので自分でAPIを呼ぶことにしました。

#uselib "advapi32" #func RegEnumKeyExA "RegEnumKeyExA" int,int,var,var,int,int,int,int #define ERROR_SUCCESS 0 sdim key,256 size=256 repeat RegEnumKeyExA 0x80000000,cnt,key.cnt,size,0,0,0,0 mes key.cnt if stat!=ERROR_SUCCESS:break loop



この記事に返信する


amm

リンク

2010/1/29(Fri) 21:10:24|NO.30230



#uselib "advapi32" #func RegEnumKeyExA "RegEnumKeyExA" int,int,var,var,int,int,int,int #define ERROR_SUCCESS 0 sdim key,256 repeat size=256 memexpand key.cnt,size RegEnumKeyExA 0x80000000,cnt,key.cnt,size,0,0,0,0 mes key.cnt if stat!=ERROR_SUCCESS:break await 0 loop



u

リンク

2010/1/30(Sat) 15:22:34|NO.30246

成功しました。ありがとうございます。

何故サイズ用変数等を初期化しなくてはならないのでしょうか。



amm

リンク

2010/1/30(Sat) 20:28:07|NO.30263

sizeを初期化するのは、RegEnumKeyExは返した文字列の大きさをsizeに格納するからです。
keyをmemexpandするのは、sdim key,256ではkey.0しか初期化してないからです。



u

リンク

2010/1/31(Sun) 16:51:04|NO.30278

sizeには再びサイズが格納されていたんですね。keyと現象が被っていたので見落としていました。
>sdim key,256ではkey.0しか初期化してないからです。
そういう仕様だったのですか。標準命令すらろくに理解できていないようでは^^;
解説ありがとうございました。



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