ValueName = "テスト"
ID = "1234567"
Ret = RegCreateKeyEx(Rootkey, Subkey, 0, "", _
REG_OPTION_NON_VOLATILE, KEY_WRITE, _
SA, Result, Disposition)
nLeng = Len(CallerID)
Ret = RegSetValueEx(Result, ValueName, 0, REG_SZ, ID, Leng)
以上のように記述しているのですが、レジストリに書かれる文字が
文字化けしてしまっているのです。
どなたか原因がわかる方教えてください。お願いします。
レジストリの文字列は面倒です。
ここを一度ご覧ください。
http://www.atmarkit.co.jp/fdotnet/dotnettips/120regtype/regtype.html
neroさん、ありがとうございます。
早速HPを見て、REG_SZは「Nullで終わるUnicode文字列値」とあったので
以下のように記述してみたのですが、やはりダメでした・・・
Ret = RegSetValueEx(Result, ValueName, 0, REG_SZ, ID, _
LenB(StrConv(ID, vbUnicode)))
・・・苦悩です
Unicode文字列を渡すときは、Byte配列の先頭アドレスを渡しましょう。
Stringなどをそのまま渡すと、暗黙の文字コード変換による文字化けがおきます。
なお、レジストリに文字列を書き込むだけなら、
'for VB6
CreateObject("WScript.Shell").RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Orator\Test", "テスト", "REG_SZ"
という手もありますよ。(VB.NETなら、Microsoft.Win32.RegistryKeyクラスで)
できました。
本当にありがとうございました。