注册表的编写

来源:互联网 发布:深入浅出mysql 编辑:程序博客网 时间:2024/04/29 17:51

常用函数 ☆ 打开一个键的函数:RegOpenKeyEx
    函数定义:LONG RegOpenKeyEx(HKEY hKey,//已经打开的键的句柄,或者直接是上述几个根键
                                LPCTSTR lpSubKey,//要打开的子键名字的地址
                                DWORD ulOptions,//保留值,必须为0
                                REGSAM samDesired,//打开方式,如读还是写
                                PHKEY phkResult//返回的打开的子键的句柄
                               );

☆ 查询某一个键值:RegQueryValueEx
    函数定义:LONG RegQueryValueEx(HKEY hKey,//要查询的键的句柄
                                   LPCTSTR lpValueName,//要查询的键值的名称
                                   LPDWORD lpReserved,//保留值
                                   LPDWORD lpType,//要查询的数据的类型
                                   LPBYTE lpData,//要返回的查询的数据
                                   LPDWORD lpcbData//预置的数据的长度
                                  );

☆ 设置一个键值RegSetValueEx
    函数定义:LONG RegSetValueEx(HKEY hKey,//要设置的键的句柄
                                 LPCTSTR lpValueName,//要访问的键值的名称
                                 LPDWORD lpReserved,//保留值
                                 DWORD dwType,//要设置的数据的类型
                                 const BYTE *lpData,//要设置的健值
                                 DWORD cbData//数据的长度
                                );

e.g.1

BOOL IsFlashPlayerExist()
{
 HKEY   hResult;
 CString m_strkey1=_T("SOFTWARE//Macromedia//FlashPlayerActiveX");
 CString m_strkey2=_T("SOFTWARE//Macromedia//FlashPlayerPlugin");
 if(ERROR_SUCCESS!=RegOpenKeyEx(HKEY_LOCAL_MACHINE,m_strkey2,0,KEY_QUERY_VALUE,&hResult)&&
    ERROR_SUCCESS!=RegOpenKeyEx(HKEY_LOCAL_MACHINE,m_strkey1,0,KEY_QUERY_VALUE,&hResult))
  return FALSE;
 char cRegData[256];
 DWORD   dwCount=256;  
 if(ERROR_SUCCESS!=RegQueryValueEx(hResult,_T("Path"),0,0,(LPBYTE)cRegData,&dwCount))  
 {
  RegCloseKey(hResult);
  return FALSE;
 }
 RegCloseKey(hResult);
 CString cRes ;
 cRes.Format(_T("%s"),cRegData);
 if(cRes!=_T(""))
  return TRUE;
 return FALSE;
}

 

e.g.2

void SetAutoRun(bool IsAutoRun)  
{   
 CString strPath = GetCurrentPath() + NAME_INSTANCE + L".exe";
 int nLength = strPath.GetLength() * 2 + 2;

 CString str;  
 HKEY   hRegKey;  

 str=_T("Software//Microsoft//Windows//CurrentVersion//Run");  
 if(RegOpenKey(HKEY_LOCAL_MACHINE,str,&hRegKey) != ERROR_SUCCESS)
 {
  ::AfxMessageBox(_T("Open Run Fail"));

  return;
 }
 if (IsAutoRun)
 {
  if(::RegSetValueEx(hRegKey,NAME_INSTANCE,0,REG_SZ,(CONST BYTE*)strPath.GetBuffer(0),nLength) != ERROR_SUCCESS)
  {
   ::AfxMessageBox(_T("Write run fail"));
   strPath.ReleaseBuffer();
   ::RegCloseKey(hRegKey);
   return;
  }
 }
 else {
  if(::RegSetValueEx(hRegKey,NAME_INSTANCE,0,REG_SZ,(CONST BYTE*)L"",0) != ERROR_SUCCESS)
  {
   ::AfxMessageBox(_T("Write run fail"));
   strPath.ReleaseBuffer();
   ::RegCloseKey(hRegKey);
   return;
  }
 }
 ::RegCloseKey(hRegKey);

原创粉丝点击