CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

怎么使用RegQueryValue?

楼主hustwjz(刻苦学习,勤奋找工作)2002-08-02 14:55:17 在 VC/MFC / 基础类 提问

我编写了如下代码  
  char   szKey[]   =   "SOFTWARE\\Century";  
  LPCTSTR   szSub   =   (LPCTSTR)"Tiger";  
  if   (ERROR_SUCCESS   ==   RegCreateKey(HKEY_CURRENT_USER,(LPCTSTR)szKey,   &hResult))//open   register  
  {  
  dwRet   =   RegQueryValue(hResult,   (LPCTSTR)szSub,   (LPTSTR)szValue,   &nLen);  
  .......  
  但是dwRet永远返回87,以及错误的参数类型  
  请问是什么原因 问题点数:50、回复次数:4Top

1 楼rokia(■大力水手■)回复于 2002-08-02 15:00:04 得分 10

LONG   RegOpenKey(  
      HKEY   hKey,                 //   handle   to   open   key  
      LPCTSTR   lpSubKey,   //   name   of   subkey   to   open  
      PHKEY   phkResult       //   handle   to   open   key!!!!!!!!!!!!!!!!  
  );  
  你的參數不對啊,應該有   HKEY   的參數啊。  
  LONG   RegQueryValue(  
      HKEY   hKey,                 //   handle   to   key   to   query!!!!!!!!!!!!!!!!!!!  
      LPCTSTR   lpSubKey,   //   subkey   name  
      LPTSTR   lpValue,       //   string   buffer  
      PLONG   lpcbValue       //   size   of   returned   string  
  );  
  第一個參數應該是   keyTop

2 楼rokia(■大力水手■)回复于 2002-08-02 15:00:53 得分 10

 
  一段例子  
  HKEY   keyExt,keyExttype;  
  TCHAR   filetype1[100]   ;  
  TCHAR   filetype2[100]   ;  
  DWORD   size   =   sizeof(TCHAR[100]);  
  DWORD   size2=size;  
   
  CString   strExt1=".";  
  strExt1+=strExt;  
  RegOpenKey(HKEY_CLASSES_ROOT,   strExt1,   &keyExt);  
  RegQueryValueEx(keyExt,   _T(""),   0,   0,   (BYTE*)filetype1,   &size);  
  Top

3 楼wistaria(听风听雨)回复于 2002-08-02 15:06:19 得分 20

RegQueryValue  
   
  RegQueryValue函数找回给定注册表键的默认值或未命名值所关联的数据。这个数据必须是一个以空字符结束的字符串。  
   
  这个函数与Windows   3.1兼容。基于Win32的应用程序应该使用RegQueryValueEx函数。    
   
  LONG   RegQueryValue(     HKEY   hKey,               //   要查询键的句柄      
  LPCTSTR   lpSubKey,                                       //   要查询子键的名字      
  LPTSTR   lpValue,     //   返回字符串的缓存      
  PLONG   lpcbValue     //   接收返回字符串的大小);    
   
  参数  
  hKey    
  当前打开的键或下列已确定保留句柄值:    
  HKEY_CLASSES_ROOT  
  HKEY_CURRENT_CONFIG  
  HKEY_CURRENT_USER  
  HKEY_LOCAL_MACHINE  
  HKEY_USERS  
  Windows   NT:   HKEY_PERFORMANCE_DATA    
  Windows   95和Windows   98:   HKEY_DYN_DATA    
   
  lpSubKey    
  指向要被找回默认值的hKey参数子键的名字的以空字符结束的字符串。如果这个参数为NULL或指向一个空字符串,那么这个函数找回能被hKey识别的默认值。    
   
  lpValue    
  指向与给定值的默认值相关联的以空字符串结束的字符串的缓存区。    
  如果lpValue是NULL并且lpcbValue不是NULL,这个函数返回ERROR_SUCCESS,并取回被lpcbData指定的变量缓存的大小(以字节为单位)。这个为值的数据缓存分配最好的途径。    
   
  lpcbValue    
  以字节为单位,指向lpData参数所指定地缓存区大小的变量。函数返回复制到lpData的数据大小的变量(包含结束字符)。    
  如果被lpData参数指定的缓存不够大,这个函数返回ERROR_MORE_DATA值,并取回被lpcbData指定的变量缓存的大小(以字节为单位)。    
  在所有的案例中,在lpcbValue返回的值的大小包含字符串的结束符。    
   
  返回值  
  如果调用成功,返回ERROR_SUCCESS。  
  如果调用失败,返回一个非零错误码(定义在WINERROR.H)。你可以使用带有FORMAT_MESSAGE_FROM_SYSTEM标记的FormatMessage函数获得错误的普通描述信息。  
   
  注意  
  能被hKey参数识别的键必须被带有KEY_QUERY_VALUE存取权限打开(KEY_READ存取权限包括KEY_QUERY_VALUE存取权限)。    
  如果这个函数的ANSI版本被使用(明确的调用RegQueryValueExA或在包含WINDOWS.H文件前不定义UNICODE),这个函数在复制它到lpValue参数给定的缓存区前,转换存贮的Unicode字符串到ANSI字符串。    
   
      Windows   NT:   需要3.1或更高版本。  
      Windows:   需要Windows   95或更高版本。  
      Windows   CE:   不支持。  
      头文件:   winreg.h。  
      输入库:   advapi32.lib。  
      Unicode:   在Windows   NT中作为Unicode和ANSI执行。  
   
  Top

4 楼In355Hz(好象一条狗)回复于 2002-08-02 15:07:21 得分 10

Win32下应该用RegQueryValueEx  
  例子:  
  static   BOOL   AfxRegGetString(HKEY   hKey,   LPCTSTR   lpValueName,   LPTSTR   lpReceive,   DWORD   cSize)  
  {  
  DWORD   dwType;  
  DWORD   cbSize   =   cSize   *   sizeof(TCHAR);  
  if   (ERROR_SUCCESS   ==   ::RegQueryValueEx(hKey,   lpValueName,   NULL,   &dwType,    
  (LPBYTE)lpReceive,   &cbSize))  
  {  
  if   (dwType   ==   REG_SZ   &&   cbSize   >   0)  
  return   TRUE;  
  }  
   
  return   FALSE;  
  }Top

相关问题

  • tomcat怎么使用?
  • ghost怎么使用?
  • fsockopen()怎么使用?
  • DBComboBox怎么使用
  • _variant怎么使用?
  • 怎么使用TerminateThread?
  • OnCtlColor怎么使用??
  • OnCtlColor怎么使用??
  • 怎么使用CryptoAPI?
  • session怎么使用?

关键词

  • win32
  • 函数
  • 字符串
  • regqueryvalue
  • lpcbvalue
  • 缓存
  • hkey
  • strext
  • 参数
  • lpvalue

得分解答快速导航

  • 帖主:hustwjz
  • rokia
  • rokia
  • wistaria
  • In355Hz

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo