WriteProfileSection

【勇芳软件工作室】汉化HomePreviousNext

WriteProfileSection函数用指定的键和值替换WIN.INI文件中指定部分的内容。

此函数用于与16位Windows应用程序的兼容性。基于Win32的应用程序应该将初始化信息存储在注册表中。

BOOL WriteProfileSection(

LPCTSTR 【lpAppName】,//指向节名的指针
LPCTSTR 【lpString】//指向具有数据缓冲区的指针
); 

参数

【lpAppName】

指向一个以null结束的字符串,其中包含写入数据的部分的名称。此部分名称通常是呼叫应用程序的名称。

【lpString】

指向缓冲区,其中包含写入命名部分的新密钥名称和相关联的值。

返回值

如果函数成功,返回值不为零。

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.

备注

Windows 95:

如果WIN.INI中没有与指定的部分名称匹配的部分,WriteProfileSection将在文件末尾创建该部分,并使用【lpString】参数中指定的键名称和值对初始化新部分。

【lpString】缓冲区中的键和值由一个或多个以null结尾的字符串组成,后跟一个最终的空字符。每个字符串具有以下形式:

键串

WriteProfileSection功能不区分大小写;字符串可以是大写和小写字母的组合。

WriteProfileSection删除命名部分的现有密钥和值,并将密钥名称和值插入【lpString】指向的缓冲区中。该函数不会尝试关联旧的和新的密钥名称;如果新名称以与旧名称不同的顺序显示,与预先存在的键和初始化文件中的值相关联的任何注释都可能与不正确的键和值相关联。

这个操作是原子的在写入信息时,不允许读取或写入初始化文件的其他操作。

Windows NT:

Windows NT将大多数.INI文件引用映射到注册表,使用以下注册表项下定义的映射:

HKEY_LOCAL_MACHINE\软件\微软\
Windows NT\CurrentVersion\IniFileMapping

当映射操作时,WriteProfileSection函数将信息写入注册表,而不是初始化文件;存储位置的变化对功能的行为没有影响。

Win32配置文件功能(Get/WriteProfile*Get/WritePrivateProfile*)使用以下步骤来定位初始化信息:

1.在注册表中的初始化文件的名称,说myfile.ini,在IniFileMapping下:

HKEY_LOCAL_MACHINE\软件\微软\
Windows NT\CurrentVersion\IniFileMapping\myfile.ini

2.查看【lpAppName】指定的段名。这将是myfile.ini下的命名值,或myfile.ini的子项,否则将不存在。

3.如果【lpAppName】指定的部分名称是myfile.ini下的一个命名值,那么该值指定注册表中的哪个位置可以找到该部分的键。

4.如果由【lpAppName】指定的部分名称是myfile.ini的子项,则该子项下的命名值将指定注册表中的哪个部分的键。如果您要查找的密钥不存在作为命名值,那么将会有一个未命名的值(显示为“< No Name >”),指定注册表中的默认位置,您将在其中找到密钥。

5.如果由【lpAppName】指定的段名称不存在作为命名值或myfile.ini下的子项,那么在我的文件下将会有一个未命名的值(如“< No Name >”)) .ini,它指定注册表中的默认位置,您可以在其中找到该部分的键。

6.如果没有myfile.ini的子项,或者没有条目名称的条目,那么在磁盘上查找实际的myfile.ini并读取其内容。

当查看注册表中指定其他注册表位置的值时,有几个前缀可以更改ini文件映射的行为:

! - 这个字符强制所有的写入都到磁盘上的注册表和.INI文件。

# - 当新用户在安装后首次登录时,此字符会使注册表值设置为Windows 3.1 .INI文件中的值。

@ - 如果在注册表中找不到所请求的数据,则此字符可防止任何读取到磁盘上的.INI文件。

USR: - 此前缀代表HKEY_CURRENT_USER,前缀后面的文本与该键相关。

SYS: - 此前缀代表HKEY_LOCAL_MACHINE \\ SOFTWARE,前缀后的文本与该键相关。

也可以看看

GetProfileSection, WritePrivateProfileSection