RegSetValueExについて解説されている項目【82.レジストリの値名、値を設定する】内のサンプルコードについてです。
私がこのコードをコピペして使ってみたところ、RegSetValueEx実行時に戻り値5のエラーが起きました。
調べてみたところ原因はRegOpenKeyExにありました。
>'ハンドル確保
>Ret = RegOpenKeyEx(Rootkey, Subkey, 0, 1, nHandle)
第三変数にこのコードでは0があてられていますが、
このときはKEY_QUERY_VALUEが指定されるそうで読み取り専用になり、
その後のRegSetValueExでは値をセットできなくなっています。
この第三変数に
KEY_SET_VALUE = &H2
を入れてやることで問題なくコードが実行できるようになりました。
これは他の人が別の掲示板で質問していたことを読んでわかったことです。
(ここのサンプルコードが載っていましたw)
私のような初心者が躓いてしまうと思いますので
サンプルコードの修正をしてはいかがでしょうか?
差し出がましい意見で失礼しました。
> 第三変数にこのコードでは0があてられていますが、
> このときはKEY_QUERY_VALUEが指定されるそうで読み取り専用になり、
> その後のRegSetValueExでは値をセットできなくなっています。
>
第三引き数は予約されているので 0 にするのが正しいですよ。(MSDNでRegOpenKeyExを確認して下さい。)
KEY_QUERY_VALUEは第四引き数ですね。(KEY_QUERY_VALUE=1)
ツイート | ![]() |