难者不会,会者不难,关于注册表的操作!

supershot 2001-03-23 02:03:00
在VC++程序中写注册表,要求在Section下再写入多个Section,下面的Section再包含Entity,相当于一种目录层次结构,不知道如何实现,请各路高手指点,不胜感激!
...全文
145 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cofan 2001-03-23
  • 打赏
  • 举报
回复
很早以前写的,自己改改吧
extern "C" DllExport BOOL NICAL_WritePrivateProfileString(
LPCTSTR lpAppName, // pointer to section name
LPCTSTR lpKeyName, // pointer to key name
LPCTSTR lpString, // pointer to string to add
LPCTSTR lpFileName // pointer to initialization filename
)
{
HKEY hWriteKey;
LONG IRC;
BOOL flag = FALSE;
DWORD dwDataType;
char keyname[1024];
sprintf(keyname,"Software\\Nical\\%s\\%s",lpFileName,lpAppName);
IRC = RegCreateKeyEx(HKEY_LOCAL_MACHINE,keyname,
0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&hWriteKey,&dwDataType);
if(IRC==ERROR_SUCCESS)
{
if (lpString != NULL)
{
IRC = RegSetValueEx(hWriteKey,lpKeyName,NULL,REG_SZ,(LPBYTE)lpString,
strlen(lpString)+1);
flag = TRUE;
}
IRC = RegCloseKey(hWriteKey);
}
return flag;
}
extern "C" DllExport BOOL NICAL_GetPrivateProfileString(
LPCTSTR lpAppName, // points to section name
LPCTSTR lpKeyName, // points to key name
LPCTSTR lpDefault, // points to default string
LPTSTR lpReturnedString, // points to destination buffer
DWORD nSize, // size of destination buffer
LPCTSTR lpFileName // points to initialization filename
)
{
HKEY hReadKey;
DWORD dwDataType;
LONG IRC;
char sub[254];
BOOL flag=FALSE;
if (lpReturnedString==NULL)
return flag;
lpReturnedString[0] = 0;
sprintf(sub,"Software\\Nical\\%s\\%s",lpFileName,lpAppName);
IRC=RegOpenKeyEx(HKEY_LOCAL_MACHINE,sub,0,KEY_READ,&hReadKey);
if(IRC==ERROR_SUCCESS)
{
IRC = RegQueryValueEx(hReadKey,lpKeyName,NULL,&dwDataType,(LPBYTE)lpReturnedString,
&nSize);
if(IRC==ERROR_SUCCESS)
flag = TRUE;
IRC = RegCloseKey(hReadKey);
}
return flag;
}
extern "C" DllExport BOOL NICAL_DeletePrivateProfileString(
LPCTSTR lpAppName, // pointer to section name
LPCTSTR lpKeyName, // pointer to key name
LPCTSTR lpFileName // pointer to initialization filename
)
{
HKEY hDeleteKey;
LONG IRC;
char sub[254];
BOOL flag = FALSE;
sprintf(sub,"Software\\Nical\\%s\\%s",lpFileName,lpAppName);
IRC=RegOpenKeyEx(HKEY_LOCAL_MACHINE,sub,0,KEY_READ,&hDeleteKey);
if(IRC==ERROR_SUCCESS)
{
IRC = RegDeleteValue(hDeleteKey,lpKeyName);
if(IRC==ERROR_SUCCESS)
flag = TRUE;
IRC = RegCloseKey(hDeleteKey);
}
return flag;
}
extern "C" DllExport BOOL NICAL_DeletePrivateProfileSection(
LPCTSTR lpAppName, // pointer to section name
LPCTSTR lpFileName // pointer to initialization filename
)
{
HKEY hDeleteKey;
LONG IRC;
char sub[254];
BOOL flag = FALSE;
sprintf(sub,"Software\\Nical\\%s",lpFileName);
IRC=RegOpenKeyEx(HKEY_LOCAL_MACHINE,sub,0,KEY_READ,&hDeleteKey);
if(IRC==ERROR_SUCCESS)
{
IRC = RegDeleteKey(hDeleteKey,lpAppName);
if(IRC==ERROR_SUCCESS)
flag = TRUE;
IRC = RegCloseKey(hDeleteKey);
}
return flag;
}
extern "C" DllExport BOOL NICAL_DeletePrivateProfile(
LPCTSTR lpFileName // pointer to initialization filename
)
{
HKEY hDeleteKey;
LONG IRC;
char sub[254];
BOOL flag = FALSE;
sprintf(sub,"Software\\Nical");
IRC=RegOpenKeyEx(HKEY_LOCAL_MACHINE,sub,0,KEY_READ,&hDeleteKey);
if(IRC==ERROR_SUCCESS)
{
IRC = RegDeleteKey(hDeleteKey,lpFileName);
if(IRC==ERROR_SUCCESS)
flag = TRUE;
IRC = RegCloseKey(hDeleteKey);
}
return flag;
}
AtCsdn 2001-03-23
  • 打赏
  • 举报
回复
如要CRegistry类的源码,请与我联系。
该类不依赖于任何东东(MFC,ATL等).
panda_w 2001-03-23
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/system/index.html
有几篇文档,看看吧
songshi 2001-03-23
  • 打赏
  • 举报
回复
ATL框架中提供一个CRegKey类 比较好用
如果你要在MFC下写程序就将这个类的一些ATL宏利用替换功能替换成MFC的就可以了
可以用Find in file在ATL的目录中找"class CRegKey"来查找这个类的源码并将其写到一个单独的文件中即可 或者自己对其进行修改使之更方便
binghuodao 2001-03-23
  • 打赏
  • 举报
回复
用API。
RegOpenKeyEx
RegCloseKey
RegEnumKeyEx
RegEnumValue
RegQueryValueEx
RegCreateKeyEx
RegSetValueEx
RegDeleteKey


16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧