我试图在C++中向注册表添加宽字符字符串。问题是RegSetValueEx()
函数不支持宽字符,它只支持类型(= unsigned char
)。在C++中将注册表值设置为宽字符字符串(WCHAR)
WCHAR myPath[] = "C:\\éâäà\\éâäà.exe"
RegSetValueExA(HKEY_CURRENT_USER, "MyProgram", 0, REG_SZ, myPath, sizeof(myPath)); // error: cannot convert argument 5 from WCHAR* to BYTE*
请不要告诉我,我应该WCHAR
转换为因为字符如é
和â
不能被储存为8个字符。
我敢肯定,这是可能的,因为我试图打开regedit
并添加一个值为C:\\éâäà\\éâäà.exe
的新密钥,它的工作。我想知道其他程序如何在俄文或中文计算机上添加到启动程序。
有没有另外一种方法呢?或者有没有办法使用通配符来格式化宽字符路径?
编辑:函数RegSetValueExW()
的Unicode版本仅更改第二个参数的类型。至少谷歌功能downvoting之前!
使用'RegSetValueExW'。 A后缀表示窄字符版本; W代表宽字符。 –