用VC++来设置获得注册表的键值

来源:互联网 发布:海川新盟软件下载 编辑:程序博客网 时间:2024/06/05 03:29
 

下面这个是基于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();
}

原创粉丝点击