GetProfileStringA 函数 (winbase.h)
检索与 Win.ini 文件中指定节中的键关联的字符串。
语法
DWORD GetProfileStringA(
[in] LPCSTR lpAppName,
[in] LPCSTR lpKeyName,
[in] LPCSTR lpDefault,
[out] LPSTR lpReturnedString,
[in] DWORD nSize
);
参数
[in] lpAppName
包含密钥的节的名称。 如果此参数 NULL,则该函数会将文件中的所有节名称复制到提供的缓冲区。
[in] lpKeyName
要检索其关联字符串的密钥的名称。 如果此参数 NULL,则该函数会将给定节中的所有键复制到提供的缓冲区。 每个字符串后跟一个 null 字符,最后一个字符串后跟第二个 null 字符。
[in] lpDefault
默认字符串。 如果在初始化文件中找不到 lpKeyName 键,GetProfileString 会将默认字符串复制到 lpReturnedString 缓冲区。 如果此参数 NULL,则默认值为空字符串“”。
避免使用尾随空白字符指定默认字符串。 该函数在 lpReturnedString 缓冲区中插入 null 字符,以去除任何尾随空白。
[out] lpReturnedString
指向接收字符串的缓冲区的指针。
[in] nSize
lpReturnedString 参数指向的缓冲区的大小(以字符为单位)。
返回值
返回值是复制到缓冲区的字符数,不包括 null-terminating 字符。
如果 lpAppName 也没有 lpKeyNameNULL 并且提供的目标缓冲区太小而无法容纳请求的字符串,则字符串将被截断,后跟 null 字符,并且返回值等于 nSize 减 1。
如果 lpAppName 或 lpKeyName为 NULL,并且提供的目标缓冲区太小,无法容纳所有字符串,则最后一个字符串将被截断,后跟两个 null 字符。 在这种情况下,返回值等于 nSize 减 2。
言论
如果与 lpKeyName 参数关联的字符串括在单引号或双引号中,则在 getProfileString 函数返回字符串时,将放弃标记。
GetProfileString 函数不区分大小写;字符串可以包含大写字母和小写字母的组合。
Win.ini 文件中的节必须采用以下格式:
[section]
key=string
.
.
.
应用程序可以使用 GetPrivateProfileString 函数从指定的初始化文件中检索字符串。
lpDefault 参数必须指向有效的字符串,即使字符串为空(也就是说,即使其第一个字符是 null 字符)。
Windows Server 2003 和 Windows XP/2000:对配置文件函数的调用可以映射到注册表而不是初始化文件。 在注册表中使用以下键指定初始化文件和节时,会发生此映射:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping
映射操作后,GetProfileString 函数从注册表检索信息,而不是从初始化文件检索信息;存储位置的更改对函数的行为没有影响。
配置文件函数使用以下步骤查找初始化信息:
- 在注册表中查找 IniFileMapping 键下初始化文件的名称。
- 查找由 lpAppName指定的节名称。 这是具有初始化文件名称的键下的命名值,或者具有此名称的子项,或者名称将不存在为值或子项。
- 如果由 lpAppName 指定的节名称是命名值,则该值指定注册表中将找到该节的键的位置。
- 如果由 lpAppName 指定的节名称是子项,则该子项下的命名值指定注册表中的哪些位置可以找到该节的键。 如果要查找的键不存在为命名值,则会有一个未命名的值(显示为“<无名称>”),用于指定注册表中可以找到该键的默认位置。
- 如果由 lpAppName 指定的节名称 不存在为命名值或子项,则会有一个未命名的值(显示为 <无名称>),用于指定注册表中的默认位置,可在其中找到分区的键。
- 如果没有分区名称的子项或条目,则查找磁盘上的实际初始化文件并读取其内容。
- ! - 此字符强制所有写入到注册表和磁盘上的 .ini 文件。
- # - 当新用户首次在安装后登录时,此字符将导致注册表值设置为 Windows 3.1 .ini 文件中的值。
- @ - 如果注册表中找不到请求的数据,则此字符可防止读取磁盘上的 .ini 文件。
- USR: - 此前缀代表 HKEY_CURRENT_USER,前缀后的文本相对于该键。
- SYS: - 此前缀表示 HKEY_LOCAL_MACHINE\SOFTWARE,前缀后的文本相对于该键。
注意
winbase.h 标头将 GetProfileString 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
支持的最低服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | 窗户 |
标头 | winbase.h (包括 Windows.h) |
库 | Kernel32.lib |
DLL | Kernel32.dll |