科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件利用VC访问INI文件和系统注册表

利用VC访问INI文件和系统注册表

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文主要对私有、系统初始化文件和系统注册表的访问方法作了较深入的讨论。

作者:青岛郎锐 来源:天极网 2007年10月19日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
对Win.ini的访问

  系统目录下的Win.ini是一种特殊的初始化文件,主要为系统提供初始化服务,在系统启动时将被系统所访问,并根据其所保存的参数值对系统进行配置。Windows专门提供了三个API函数GetProfileInt()、GetProfileString()和WriteProfileString()对Win.ini进行读写访问,其函数用法同访问私有初始化文件的那几个函数非常类似,只是不必再去指定初始化文件名。下面是这三个函数的原型声明:

UINT GetProfileInt(LPCTSTR lpAppName, // 节名地址
 LPCTSTR lpKeyName, // 项名地址
 INT nDefault // 在项名没有找到时返回的缺省值
);
DWORD GetProfileString(LPCTSTR lpAppName, // 节名地址
 LPCTSTR lpKeyName, // 项名地址
 LPCTSTR lpDefault, // 缺省字符串地址
 LPTSTR lpReturnedString, // 存放字符串的缓存的地址
 DWORD nSize // 缓存的大小
);
BOOL WriteProfileString(LPCTSTR lpAppName, // 节名地址
 LPCTSTR lpKeyName, // 项名地址
 LPCTSTR lpString // 要写入字符串的地址
);

  只要对前面对私有初始化文件进行访问的代码稍加改动即可将程序的配置信息添加到Win.ini中,改动后的代码如下:

// 得到程序累计运行次数
UINT Time = GetProfileInt("PROGRAM", "RUNTIME", 0);
// 得到上次运行日期
GetProfileString("DATE", "LAST", "2002-11-1", buffer, 1000);
// 显示从初始化文件获取到的文件信息
sMsg.Format("本软件共运行过%d次,上次运行日期为%s", Time, CString(buffer));
AfxMessageBox(sMsg);
// 累加运行次数,并保存到初始化文件
Time++;
sTime.Format("%d", Time);
WriteProfileString("PROGRAM", "RUNTIME", sTime);
// 获取当前日期,并保存到初始化文件
CTime tm = CTime::GetCurrentTime();
sDate.Format("%d-%d-%d", tm.GetYear(), tm.GetMonth(), tm.GetDay());
WriteProfileString("DATE", "LAST", sDate);

  由于Win.ini文件是系统初始化文件,在程序没有运行前文件内不含“DATE”和“PROGRAM”等自定义的节以及其下各项,因此在程序第一次执行后,将由WriteProfileString()函数向Win.ini文件末尾创建相关节、项,并完成数据的写入。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章