请教注册表API问题

abcdsdadfasfasfasfsa 2001-08-11 02:02:47
我用RegSaveKey建立主键"name",用RegSetValue为"name"赋值为"hellow",然后,用RegQueryValue从注册表中取"name"的值。前面语句成功,到了取值时错误,请各位高手为小子指点迷津,不胜感激:
代码如下:
char t1[20],t2[20];
memset(t1,0,20);
memset(t2,0,20);
strcpy(t1,"hellow");
strcpy(t2,"name");
//建立主键
if(::RegSaveKey(HKEY_USERS,t2,NULL) ==ERROR_SUCCESS){
TRACE("ok1\n");
}
//写入键值
if(::RegSetValue(HKEY_USERS,t2,REG_SZ,t1,19)==ERROR_SUCCESS){
TRACE("ok2\n");
}
//刷新
if(::RegFlushKey(HKEY_USERS) == ERROR_SUCCESS){
TRACE("OK3\n");
}
//取值
memset(t1,0,20);
long *lon1;
lon1=NULL;
try{
if(::RegQueryValue(HKEY_USERS,t2,t1,lon1)== ERROR_SUCCESS){
TRACE("name value is [%s]\n",t1);
}
...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzlxk 2001-08-11
  • 打赏
  • 举报
回复
gz
  • 打赏
  • 举报
回复
是lon1的定义错误,昨晚已经解决,不过还是谢谢
Belle 2001-08-11
  • 打赏
  • 举报
回复
study
zhengyun_ustc 2001-08-11
  • 打赏
  • 举报
回复
My Advice:

我爱这么写:
CRegKey rkDestination;
CComBSTR bstrDestinationDir = "Software\\XXX\\YYY";
hr = rkDestination.Open(HKEY_LOCAL_MACHINE,
OLE2T(bstrDestinationDir),
KEY_ALL_ACCESS);

TCHAR szKeyValue[MAX_PATH];
LONG lStringLength = MAX_PATH;

hr = ::RegQueryValue((HKEY)rkDestination, NULL, (LPTSTR)szKeyValue, &lStringLength);

// 应该设置的值:
_bstr_t bstrOurGoalString = bstrContent;
hr = rkDestination.SetValue(bstrOurGoalString, "");
if(ERROR_SUCCESS != hr)
{
rkDestination.Close();
return E_ZY_CANNOT_SET_VALUE;
}
一直很好用的。
tryibest 2001-08-11
  • 打赏
  • 举报
回复
long lon1=20;
::RegQueryValue(HKEY_USERS,t2,t1,&lon1);
还有可能你的t2用法有错误
t2是子键名,你的t2好像是路径+子键名,
我认为路径应在HKEY中就是第一个参数中,t2为子键名,
我建议你写数据用regsetvalueex
读用regsetvalueex

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧