RegSetValueEx

解決


アサシ  2002-12-04 20:04:05  No: 105599

RegSetValueExを使用して値を書き込むとエラーになります。
エラーの内容は「アクセスは拒否されました」だそうです。

Win98だと正常に書き込めるのですが、XPだとこのようなエラーになります。

キーは作成できてるのですが、値の書き込みがどこにも出来ません・・・。
どなたかお願いします。


YO  2002-12-04 21:46:40  No: 105600

そのレジストリキーへのアクセス権限を持っていますか?

例えば,NTだとHKEY_LOCAL_MACHINE以下に対して,
AdministratorsとSystemはフルコントロールの権限を持っていますが,
Everyoneは読み込みの権限しか持っていません。

他に,このエラーはKEY_SET_VALUE無しにハンドルを作成した場合などにも起きます。
#KEY_SET_VALUEはKEY_WRITEとKEY_ALL_ACCESSに含まれます。


アサシ  2002-12-04 23:06:37  No: 105601

ありがとうございます!

作成時にKEY_SET_VALUEを入れて作成し
RegOpenKeyExでハンドルを取得する際に、第三引数にKEY_SET_VALUEを入れて
取得したハンドルに対して、RegSetValueExで書き込んだらXPでも書き込めました。

とりあえず解決です。

どっかのHPでRegOpenKeyExの第二、第三引数は常に0、1って書いてあったのでその通りやってました。


YuO  2002-12-05 00:44:31  No: 105602

> どっかのHPでRegOpenKeyExの第二、第三引数は常に0、1って書いてあったのでその通りやってました。

このサイトにその大嘘が書いてありますね。
APIを使って動かないのであれば,とりあえずMSDNを参照してみることです。

ちなみに,RegOpenKeyExなんぞ使わずにRegCreateKeyExのみ使うことで,
レジストリの該当キーが存在しようがしまいが開くことが出来ます。


アサシ  2002-12-05 01:06:41  No: 105603

ほんとだ(笑)
気づきませんでした。。。

悪気は無かったのですが。

というかXPでレジストリを書き込む際に正しく書き込めない(値が途中で切れてる)のですが、どうしてでしょうか?(取得も出来てないようです。)

98では難なく動いています。

まぁもうちょっと調べてみます。XPさっぱりわかりません。XP嫌い。


YuO  2002-12-05 04:05:30  No: 105604

> というかXPでレジストリを書き込む際に正しく書き込めない(値が途中で切れてる)のですが、どうしてでしょうか?(取得も出来てないようです。)

APIの使い方が悪いのでしょう。
戻り値をちゃんと調べてみるとよいかと。

> まぁもうちょっと調べてみます。XPさっぱりわかりません。XP嫌い。

NT系の方が細かい制御ができるので,逆に制限が厳しいとも言えます。
ちゃんとMSDNを読んで使えばレジストリはそれほど難しくないです。


アサシ  2002-12-05 05:03:44  No: 105605

すいません解決しましたXP。

RegSetValueExに渡す最後の引数がLenでとってました。
LenBにしたら動きました。書き込む値に全角文字も入っていたので。。。

YuOさん本当にいつもありがとうございます。師匠と呼ばせてください。


アサシ  2002-12-05 05:05:41  No: 105606

でも98だと動く。。。何でだろう?
まぁ解決解決!気分いいです!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加