writeProfileStringA 函数 (winbase.h)

将字符串复制到 Win.ini 文件的指定节中。 如果 Win.ini 使用 Unicode 字符,该函数会将 Unicode 字符写入文件。 否则,函数将写入 ANSI 字符。

注意 提供此函数只是为了与 16 位版本的 Windows 兼容。 应用程序应在注册表中存储初始化信息。
 

语法

BOOL WriteProfileStringA(
  [in] LPCSTR lpAppName,
  [in] LPCSTR lpKeyName,
  [in] LPCSTR lpString
);

参数

[in] lpAppName

要向其复制字符串的节。 如果节不存在,则会创建一个。 节的名称不区分大小写;字符串可以是大写字母和小写字母的任意组合。

[in] lpKeyName

要与字符串关联的键。 如果指定节中不存在该键,则会创建它。 如果此参数为 NULL,则删除整个节(包括 节中的所有条目)。

[in] lpString

要写入文件的 以 null 结尾的字符串。 如果此参数为 NULL,则删除 lpKeyName 参数指向的键。

返回值

如果函数成功将字符串复制到 Win.ini 文件,则返回值为非零值。

如果函数失败,或者刷新 Win.ini 的缓存版本,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

Win.ini 文件中的 节必须采用以下格式: =字符串

系统保留最新注册表文件映射的缓存版本以提高性能。 如果所有参数均为 NULL,则该函数将刷新缓存。 当系统正在编辑文件的缓存版本时,编辑文件本身的进程将使用原始文件,直到清除缓存。

系统使用以下注册表项下定义的映射将大多数 .ini 文件引用映射到注册表:

HKEY_LOCAL_MACHINE
   SOFTWARE
      Microsoft
         Windows NT
            CurrentVersion
               IniFileMapping

映射操作后, WriteProfileString 函数会将信息写入注册表,而不是初始化文件;存储位置的更改不会影响函数的行为。

配置文件函数使用以下步骤查找初始化信息:

  1. 在注册表中查找 IniFileMapping 项下的初始化文件的名称。
  2. 查找 由 lpAppName 指定的节名称。 这是具有初始化文件名称的键下的命名值,或者是具有此名称的子项,或者名称不会作为值或子项存在。
  3. 如果 由 lpAppName 指定的节名称是一个命名值,则该值指定在注册表中查找该节的键的位置。
  4. 如果 lpAppName 指定的节名称是子项,则该子项下的命名值指定在注册表中查找该节的项的位置。 如果要查找的项没有作为命名值存在,则 (<显示为“无名称> ”) ,该值指定在注册表中查找项的默认位置。
  5. 如果 lpAppName 指定的节名称不是作为命名值或子项存在的,则会有一个未命名的值 (显示为 <“无名称>) ,该名称指定注册表中可在其中找到该节的键的默认位置。
  6. 如果节名称没有子项或条目,请在磁盘上查找实际的初始化文件并读取其内容。
查看注册表中指定其他注册表位置的值时,有几个前缀会更改 .ini 文件映射的行为:
  • ! - 此字符强制所有写入操作同时转到注册表和磁盘上的 .ini 文件。
  • # - 当新用户在安装后首次登录时,此字符会导致注册表值设置为 Windows 3.1 .ini 文件中的值。
  • @ - 如果注册表中找不到请求的数据,此字符可防止任何读取操作转到磁盘上的 .ini 文件。
  • USR: - 此前缀代表 HKEY_CURRENT_USER,前缀后面的文本相对于该键。
  • SYS: - 此前缀代表 HKEY_LOCAL_MACHINE\SOFTWARE,前缀后面的文本相对于该键。

注意

winbase.h 标头将 WriteProfileString 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

GetProfileString

WritePrivateProfileString