下面个函数 怎么修改成一个函数?
想修改成 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);
}
//创—WORD型键值
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);
}
[解决办法]
再加一个参数标记是DWORD还是char*就可以了,比如0:DWORD;1:char*
[解决办法]
如果你就这两种键值的话,用一个bool就可以,否则就用个short。类似这样就可以了,注意你那个第二个函数的返回值也搞成返回bool的
bool CreateStringReg(HKEY hRoot,char *szSubKey,DWORD dwType, char* ValueName,char *Data ,bool bFlag)
{
if (bFlag)
{
// CreateStringReg
}
else
{
// CreateDWORDReg
}
}
[解决办法]
试试这样行不行,大概的意思:
//创—WORD型键值 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);
}
至于变量Data,可以定义为全局变量,也可以放进参数中。
[解决办法]
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;
}