下面个函数 怎么修改成一个函数?
想修改成 CreateStringReg(HKEY hRoot,char *szSubKey,DWORD dwType, char* ValueName,char *Data) ,感觉reg_sz reg_dword 难住我了。大家快帮我。
//创建字符串型键值
bool CreateStringReg(HKEY hRoot,char *szSubKey,char* ValueName,char *Data)
{
HKEY hKey;
long lRet = RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
if (lRet!=ERROR_SUCCESS) return false;
lRet=RegSetValueEx(hKey,ValueName,0,REG_SZ,(BYTE*)Data,strlen(Data));
if (lRet!=ERROR_SUCCESS) return false;
RegCloseKey(hKey);
}
//创建DWORD型键值
void CreateDWORDReg(HKEY hRoot , char *szSubKey , char *ValueName , DWORD Data)
{
HKEY hKey;
long lRet = RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
if(lRet != ERROR_SUCCESS) return;
DWORD dwSize = sizeof(DWORD);
lRet = RegSetValueEx(hKey,ValueName,0,REG_DWORD,(BYTE*)&Data,dwSize);
if(lRet != ERROR_SUCCESS) return;
RegCloseKey(hKey);
}
bool CreateStringReg(HKEY hRoot,char *szSubKey,DWORD dwType, char* ValueName,char *Data ,bool bFlag)
{
if (bFlag)
{
// CreateStringReg
}
else
{
// CreateDWORDReg
}
}
//创建DWORD型键值 iFlag = 1: char;iFlag = -1 :DWORD
int CreateDWORDReg(HKEY hRoot , char *szSubKey , char *ValueName , int iFlag )
{
HKEY hKey;
long lRet = RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
if(lRet != ERROR_SUCCESS && iFlag == -1 )
{
return 1;
}
if(lRet != ERROR_SUCCESS && iFlag == 1 )
{
return 2;
}
DWORD dwSize = sizeof(DWORD);
if ( iFlag == -1 )
{
lRet = RegSetValueEx(hKey,ValueName,0,REG_DWORD,(BYTE*)&Data,dwSize);
}
else if ( iFlag == 1 )
{
lRet=RegSetValueEx(hKey,ValueName,0,REG_SZ,(BYTE*)Data,strlen(Data));
}
if(lRet != ERROR_SUCCESS) return 0; // 也可以同上面详细返回
RegCloseKey(hKey);
}
bool WriteRegEx(HKEY hRoot, LPCTSTR szSubKey, LPCTSTR ValueName, DWORD dwType, char* szData, DWORD dwData)
{
HKEY hKey;
bool Result = false;
if(RegCreateKeyEx(hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL) != ERROR_SUCCESS)
return false;
switch(dwType)
{
case REG_SZ:
case REG_EXPAND_SZ:
if(RegSetValueEx(hKey,ValueName,0,dwType,(LPBYTE)szData,strlen(szData)+1) == ERROR_SUCCESS)
Result =true;
break;
case REG_DWORD:
if(RegSetValueEx(hKey,ValueName,0,dwType,(LPBYTE)&dwData,sizeof(DWORD)) == ERROR_SUCCESS)
Result =true;
break;
}
RegCloseKey(hKey);
return Result;
}