WriteProfileString写win.ini文件和操作注册表项(VC)【转】

http://www.cnblogs.com/lantionzy/archive/2009/10/10/1580311.html

有时候,我们需要将初始化信息写入到配置文件中,当程序启动时从这个配置文件中读取这些初始化信息。现在,大部分软件都将这些信息写入到注册表中,然后在启动软件时,从注册表中读取这些初始化信息。但是早期的一些程序都是将这些信息写到Win.ini文件中。该文件位于系统安装根目录下的Windows目录下。
      在程序中,如果想要向Win.ini文件写入一些初始化信息,可以使用WriteProfileString函数来实现。需要注意的是,Windows提供这个函数只是为了兼容16位版本的应用程序,基于Win32的程序应使用注册表来存储初始化信息。WriteProfileString函数原型如下:
  BOOL WriteProfileString(
    LPCTSTR
lpAppName ,   // section name
    LPCTSTR lpKeyName ,   // key name
    LPCTSTR lpString        // string to write
  );
      下面,我们建立一个空MFC工程File,在File程序中利用WriteProfileString函数将程序的初始化信息写入Win.ini文件,并将这个操作放置到CFileApp类的InitInstance函数中,在SetRegistryKey函数调用后添加代码。

 1BOOL CFileApp::InitInstance()
 2{
 3        AfxEnableControlContainer();
 4
 5    // Standard initialization
 6    // If you are not using these features and wish to reduce the size
 7    //  of your final executable, you should remove from the following
 8    //  the specific initialization routines you do not need.
 9
10#ifdef _AFXDLL
11    Enable3dControls();            // Call this when using MFC in a shared DLL
12#else
13    Enable3dControlsStatic();    // Call this when linking to MFC statically
14#endif
15
16    SetRegistryKey(__T("Local AppWizard-Generated Applications"));
17    ::WriteProfileString("http://www.cnblogs.com""admin""lantionzy");
18        
19        
20        return TRUE;
21}
      这段代码将向Win.ini文件写入一些信息,创建一个新的段,名称为:"http://www.cnblogs.com”,在其上创建一个新键,键名为:admin,值为:lantionzy。Build并运行程序,然后打开Win.ini文件,可以看到文件中新添加的段名、键名和其值。
      在CWinApp类中也有WriteProfileString函数,那么它与Win32API中相应函数有什么区别呢?CWinApp类中WriteProfileString函数声明如下:
       BOOL WriteProfileString( LPCTSTR lpszSection , LPCTSTR lpszEntry , LPCTSTR lpszValue );
      
可以看到CWinApp类中提供的WriteProfileString函数和Win32API提供的一致。然而使用结果却不一样,在我的机器上,调用CWinApp类的WriteProfileString函数之后,将把信息写到注册表中,而不是Win.ini文件中。
      将上述代码中的第17行改成这样:(去掉 域名解析符::)
WriteProfileString( " http://www.cnblogs.com " " admin " " lantionzy " );
      
运行File程序,然后打开注册表,将会看到我们刚刚写入的信息位于:HKEY_CURRENT_USER/Software/Local AppWizard-Generated Applications/File子项下,而且该注册表项与File程序中写进的信息相同。

备注:在不同操作系统环境下,CWinApp类中提供的WriteProfil eString函数会把信息存储到不同的地方,或者写到Win.ini文件中,或者写入注册表中。例如:在Windows NT系统下,该函数把信息存储到注册表中;在Windows 3.X系统下,信息被写入Win.ini文件中。

本人所用测试环境:

Windows edition
  Microsoft? Windows Server? 2008 Enterprise
  6.0.6001 Service Pack 1 Build 6001
System
  Processor: Intel(R) Pentium(R)Dual CPU E2180 @2.00GHz
  Memory (RAM): 4.00GB
  System type: 64-bit Operating System


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值