Win.ini和注册表的读取写入
来源:互联网 发布:模拟球机该网络 编辑:程序博客网 时间:2024/05/18 09:02
Win.ini文件的读写
PlatForm SDK的WriteProfileString()函数可以写入一个字符串到Win.ini文件的制定段中
PlatForm SDK的GetProfileString()函数可以从Win.ini文件中获得指定的段中制定键的字符串信息。
/************************************************************************** 往WIN.ini文件中写入内容和读取信息 *************************************************************************/ ::WriteProfileString("name","dengyongbo","25"); char ch[100]; ::GetProfileString("name","dengyongbo","xiaoming",ch,100); AfxMessageBox(ch);
注册表编程
但是CWinApp类的成员函数WriteProfileString()函数可以写入一个字符串到注册表的指定段中
但是CWinApp类的成员函数GetProfileString()函数可以从注册表中获得指定目录下的指定段的字符串信息。
/************************************************************************** 往注册表中写入内容和读取信息 *************************************************************************/
WriteProfileString("name","dengyongbo","25"); CString str; str=GetProfileString("name","dengyongbo"); AfxMessageBox(str);
注意:在应用程序类的InitInstance()函数中,有一条如下的代码:SetRegistryKey(_T("Local AppWizard-Generated Applications"));我们上面往注册表中写入的美容都在Local AppWizard-Generated Applications目录下可以找到,我们可以重写这条语句,建立我们自己的目录。
在注册表编程之前,需要了解一下注册表中某一项的存放形式,每一条注册表项由名称、类型、数据三部分构成,如下图所示:
其中需要注意的是,上面两条注册表项的内容是很不一样的,首先在二者的名称上一种是没有名称的一种是有名称的;其次二者的类型也不同REG_SZ是一种普通的类型,除此之外还有REG_DWORD、REG_DWORD_LITTLE_ENDIAN等很多类型。以上区别需要用不同的方法向注册表中写入以上内容。
(1)读写无名称的注册表数据
<1>RegCreateKey()在指定目录下创建注册表项
<2>RegSetValue()往指定的注册表项中添加数据。注意:该函数只能添加无名称的类型为REG_SZ的数据
<3>RegCloseKey()关闭注册表项
<4>RegQueryValue()获取注册表中指定项的数据。该函数的第三个参数为空第四个参数不为空的话可以用第四个参数返回注册表中指定项的数据的长度,因此可以通过连续调用两次该函数巧妙完成注册表的读写,合理分配内存大小。示例代码如下:
************************************************************************** 往注册表中写入内容无名称并且类型为REG_SZ的数据 *************************************************************************/
HKEY hkey;
RegCreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\dengyongbo\\age",&hkey);
RegSetValue(hkey,NULL,REG_SZ,"25",NULL);
RegCloseKey(hkey);
************************************************************************** 从注册表中读取无名称并且类型为REG_SZ的数据 *************************************************************************/
char* pBuf; long lvalue;
RegQueryValue(HKEY_LOCAL_MACHINE,"SOFTWARE\\dengyongbo\\age",NULL,&lvalue);
pBuf=new char[lvalue];
RegQueryValue(HKEY_LOCAL_MACHINE,"SOFTWARE\\dengyongbo\\age",pBuf,&lvalue); MessageBox(pBuf);
(2)读写有名称的并且各种类型的注册表数据
<1>RegCreateKey()在指定目录下创建注册表项
<2>RegSetValueEx()往指定的注册表项中添加数据。注意:该函数能添加有名称和无名称以及各种类型的注册表数据
<3>RegCloseKey()关闭注册表项
<4>RegOpenKey()在读有名称的注册表数据时需先打开注册表
<5>RegQueryValueEx()接收有名称和各种类型的注册表数据
示例代码如下:
/************************************************************************** 往注册表中写入有名称和各种类型的数据 *************************************************************************/
HKEY hkey; DWORD dwage=30;
RegCreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\dengyongbo\\age",&hkey);
RegSetValueEx(hkey,"bobo",0,REG_DWORD,(const BYTE*)&dwage,4);
RegCloseKey(hkey);
/************************************************************************** 从注册表中读取有名称和各种类型的数据 *************************************************************************/
HKEY hkey; DWORD dwtype; DWORD dwvalue; DWORD dwage; RegOpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\dengyongbo\\age",&hkey); RegQueryValueEx(hkey,"bobo",0,&dwtype,(LPBYTE)&dwage,&dwvalue); CString str; str.Format("age=%d",dwage); MessageBox(str);
打包程序的时候,文件安装的路径要写入win.ini中,不然打开安装的程序会报Select Data Source的问题。若是在Installshield中的工程中修改了安装路径,不要忘了在读写win.ini的地方也修改。
更多关于注册表操作的函数请参看MSDN。
- Win.ini和注册表的读取写入
- Win.ini和注册表的读取写入
- 读取和写入Windows的INI文件
- Net程序ini的读取和写入
- vc对win.ini和注册表的 读与写
- Win.ini文件和注册表编程
- C#读取和写入注册表
- QT 读取和写入注册表
- 读取和写入.INI文件的指定行
- C#中实现注册表的写入和读取
- Qt QSettings读取注册表和ini
- C#写入和读取ini文件
- ASP.NET读取和写入注册表
- 注册表写入读取和启动项删除
- VC注册表写入和读取字符串
- C++ ini文件的读取与写入
- MFC .ini文件的读取与写入
- 注册表的建立,写入,读取,删除
- C51单片机定时器T0,T1的常用基本设置
- ibeacon广播数据简析
- java父类强转成子类
- [玩耍]C++控制台扫雷
- (二)负载均衡
- Win.ini和注册表的读取写入
- 玩转gitHub之更新代码
- sql将一个字段的数据加到另一个字段中
- vs 2015 安装ionic后启动页面没有显示
- dns备忘录
- 【Office】使用数字证书进行数字签名
- MFC中如何画带实心箭头的直线
- Linux关机命令详解
- (三)集群容错