正文

C++]用VC++来设置获得注册表的键值(问题解决)2007-07-13 14:13:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/maliang1225/27516.html

分享到:

下面这个是基于MFC的基本对话写的。。  演示设置注册表的3中类型的值和获得注册表的3中类型的值。。 分别用RegSetValueEx()来设置,RegQueryValueEx()函数来获得。   void CUserRegDlg::OnOK() { // TODO: Add extra validation here  CString str = "hello reg"; DWORD regd = 100; BYTE bValues[] = { 0x11, 0x12, 0x55 };  BYTE Vals[100]; DWORD lenIt = 100; HKEY hk;  // 打开注册表如果没有则创建, 返回注册表句柄于hk  if ( ::RegCreateKey( HKEY_LOCAL_MACHINE, "SOFTWARE\\Test\\", &hk ) == ERROR_SUCCESS ) {  AfxMessageBox( "打开注册表" ); }  // 保存参数到注册表 try {  /*   RegSetValueEx( 根键句柄, 值项名称, 保留参数补0即可, 数据类型, 所设置的数据, 数据长度 )  用来设置注册表键特定的值,如果数据不存在则创建它    */  /* 保存字符值到注册表 */  if ( ::RegSetValueEx( hk, "Server", 0, REG_SZ, (LPBYTE)(LPCSTR)str, str.GetLength( ) +1 ) == ERROR_SUCCESS )  {   AfxMessageBox( "字符值参数保存成功" );  }    /* 保存双字节到注册表 */  if ( ::RegSetValueEx( hk, "part", 0, REG_DWORD, (BYTE*)&regd, sizeof( regd ) ) == ERROR_SUCCESS )  {   AfxMessageBox( "双字节参数保存成功" );  }   /* 保存二进制到注册表 */   if ( ::RegSetValueEx( hk, "id", 0, REG_BINARY, bValues, 3) == ERROR_SUCCESS )  {   AfxMessageBox( "二进制参数保存成功" );  }     /*  RegQueryValueEx( 根键句柄, 值项名称, 保留参数补0即可, 返回值的数据类型(可为NULL), 返回       读取的数据, 返回读取数据的长度 )  用来返回注册表键的特定名称的值  /*  /* 获得字符值 */  if ( ::RegQueryValueEx( hk, "Server", 0, NULL, (BYTE*)Vals, &lenIt ) == ERROR_SUCCESS )  {   AfxMessageBox( (CString)Vals );  }   /* 获得双字节值 */  if ( ::RegQueryValueEx( hk, "part", 0, NULL, (BYTE*)Vals, &lenIt ) == ERROR_SUCCESS )  {   AfxMessageBox( (CString)Vals );  }   /* 获得二进制值 */   if ( ::RegQueryValueEx( hk, "id", 0, NULL, (BYTE*)Vals, &lenIt ) == ERROR_SUCCESS )  {   AfxMessageBox( (CString)Vals );  }   // 关闭注册表  ::RegCloseKey( hk ); } catch(...) {  return; } // CDialog::OnOK(); }

阅读(2906) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册