0 不含Ex的都是16位版本。
1 写SubKey时一般选择打开注册表进行复制,要不很容易出错。
2 SubKey前面没有\\。
3 成功返回ERROR_SUCCESS(0),失败返回非0,用GetLastError()获取错误码。
4 当ret是161,ErrCode为2的时候:可能是Subkey写错了。
5 网络:在使用这个函数RegOpenKeyEx的时候,老是执行不成功,函数本身返回2,GetLastError返回0。
在CSDN上查阅资料说是返回2的原因是注册表中对应路径不存在,可是我电脑中注册表那个键值明明
存在的。就这样慢慢调试,换个键值查询,用VC6、VS2010(本来是用vs2008),可是在vc6下不管查询什麽简
直都能成功,折腾了半天时间,最后还是不行。最后在分析代码的时候,觉得代码有问题,于是终于发现了:我用的是TCHAR!!
而且函数我用的是RegOpenKeyExA!!!原因就在这里!!!所以我觉得RegOpenKeyEx返回2的
原因一是路径真的不存在,二是参数错误,三可能是权限问题(这个我没遇到)。
6 RegQueryValueEx:
if the lpdatabuffer is too small to receive the data,returns ERROR_MORE_DATA.
if the lpvalueName register value dose not exist,return ERROR_FILE_NOT_FOUND.
若有两次调用,第一次计算需要的大小。
7 RegSetValueEx:
lpdata:为null value is valid,同时cbdata must be to set '0'.
https://msdn.microsoft.com/en-us/library/ms724923(VS.85).aspx
RegSetValueEx(hKey, TEXT("test"), 0, REG_SZ, (LPBYTE)TEXT("test.dll"), 256); cbData不能太大,否则很可能把lpData指向的内容之外的其他字符也写入注册表中。导致错误发生。
RegSetValueEx(hKey, TEXT("test"), 0, REG_SZ, (LPBYTE)szTest, sizeof(TCHAR)*iLen );
http://blog.csdn.net/tracyzhongcf/article/details/4076870
8