レジストリの値名、値を設定する

解決


ななまる  2004-03-31 11:36:36  No: 82787  IP: [192.*.*.*]

はじめまして。
レジストリに値名、値を設定したいのですが、
RegSetValueExの戻り値が5(アクセスできません?)となります。
レジストリのキーをオープンでは正常にいきます。

↓こちらのサンプルプログラムでも同じエラーになるのですが、
何が問題なのでしょうか。
http://madia.world.coocan.jp/vb/API/RegSetValueEx.htm

どなたかご存じの方教えて下さい。
WinNT4.0、VB6.0です。

編集 削除
たかみちえ  URL  2004-03-31 11:53:04  No: 82788  IP: [192.*.*.*]

それだけではわかりませんが、書き込み権限のないアカウントを使っていたりはしていませんか?
レジストリを書き込み可能な状態で開いていますか?

編集 削除
ななまる  2004-03-31 12:05:10  No: 82789  IP: [192.*.*.*]

回答ありがとうございます。
こちらのサンプルの「レジストリのキーを作成する」ではできたので権限はあると思います。

http://madia.world.coocan.jp/vb/API/RegCreateKeyEx.htm

レジストリを書き込み可能な状態で開くというのは、
以下のようなレジストリのキーのオープンではダメなのでしょうか。
長々書いてすいません。

Public Function fRegSetValue(hRegValue As String) As String

    Dim ret     As Long
    Dim Rootkey As String
    Dim Subkey  As String
    Dim nHandle As Long
    Dim nLeng   As Long
    Dim sName   As String
    Dim 戻り値  As String

    Rootkey = HKEY_CURRENT_USER
    Subkey = "Software\Adobe\Acrobat PDFWriter"
    sName = "PDFFileName"
    
    'レジストリのキーをオープンしてハンドル確保
    ret = RegOpenKeyEx(Rootkey, Subkey, 0, 1, nHandle)
    If ret <> ERROR_SUCCESS Then
        戻り値 = "レジストリのキーのオープンに失敗しました。"
        GoTo endproc
    End If

    nLeng = Len(hRegValue) 

    '値を設定する
    ret = RegSetValueEx(nHandle, sName, 0, REG_SZ, hRegValue, nLeng)
    
    'エラーの確認
    If ret = ERROR_SUCCESS Then
        戻り値 = "正常に設定しました"
    Else
        戻り値 = "正常に設定できませんでした"
    End If

 endproc:
    'ハンドルを閉じる
    Call RegCloseKey(nHandle)
    fRegSetValue = 戻り値

End Function

編集 削除
ななまる  2004-03-31 13:21:08  No: 82790  IP: [192.*.*.*]

自己レスします。

>ジストリを書き込み可能な状態で開いていますか?

というのはこれでいいんですよね。

ret = RegOpenKeyEx(Rootkey, Subkey, 0, KEY_ALL_ACCESS, nHandle)


正常に書き込みできました。
ありがとうございました。

編集 削除