Compartir a través de


Función WritePrivateProfileSectionA (winbase.h)

Reemplaza las claves y los valores de la sección especificada en un archivo de inicialización.

Nota Esta función solo se proporciona por compatibilidad con versiones de 16 bits de Windows. Las aplicaciones deben almacenar información de inicialización en el Registro.
 

Sintaxis

BOOL WritePrivateProfileSectionA(
  [in] LPCSTR lpAppName,
  [in] LPCSTR lpString,
  [in] LPCSTR lpFileName
);

Parámetros

[in] lpAppName

Nombre de la sección en la que se escriben los datos. Este nombre de sección suele ser el nombre de la aplicación que realiza la llamada.

[in] lpString

Los nuevos nombres de clave y los valores asociados que se van a escribir en la sección con nombre. Esta cadena está limitada a 65 535 bytes.

[in] lpFileName

Nombre del archivo de inicialización. Si este parámetro no contiene una ruta de acceso completa para el archivo, la función busca en el directorio de Windows el archivo. Si el archivo no existe y lpFileName no contiene una ruta de acceso completa, la función crea el archivo en el directorio de Windows.

Si el archivo existe y se creó con caracteres Unicode, la función escribe caracteres Unicode en el archivo. De lo contrario, la función crea un archivo con caracteres ANSI.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Los datos del búfer a los que apunta el parámetro lpString constan de una o varias cadenas terminadas en null, seguidas de un carácter NULO final. Cada cadena tiene el formato siguiente:

Clave=Cadena

La función WritePrivateProfileSection no distingue mayúsculas de minúsculas; la cadena a la que apunta el parámetro lpAppName puede ser una combinación de letras mayúsculas y minúsculas.

Si ningún nombre de sección coincide con la cadena a la que apunta el parámetro lpAppName , WritePrivateProfileSection crea la sección al final del archivo de inicialización especificado e inicializa la nueva sección con los pares de nombre de clave y valor especificados.

WritePrivateProfileSection elimina las claves y valores existentes para la sección con nombre e inserta los nombres y valores de clave en el búfer al que apunta el parámetro lpString . La función no intenta correlacionar nombres de clave antiguos y nuevos; Si los nuevos nombres aparecen en un orden diferente de los nombres antiguos, es probable que los comentarios asociados a claves y valores preexistentes del archivo de inicialización estén asociados a claves y valores incorrectos.

Esta operación es atómica; no se permiten operaciones que leen o escriben en el archivo de inicialización especificado mientras se escribe la información.

El sistema mantiene una versión almacenada en caché de la asignación de archivos del Registro más reciente para mejorar el rendimiento. Si todos los parámetros son NULL, la función vacía la memoria caché. Mientras el sistema edita la versión almacenada en caché del archivo, los procesos que editan el propio archivo usarán el archivo original hasta que se haya borrado la memoria caché.

El sistema asigna la mayoría de las referencias de archivo .ini al registro mediante la asignación definida en la siguiente clave del Registro:

HKEY_LOCAL_MACHINE
   SOFTWARE
      Microsoft
         Windows NT
            CurrentVersion
               IniFileMapping

Esta asignación es probable que si una aplicación modifica los archivos de inicialización del componente del sistema, como Control.ini, System.ini y Winfile.ini. En este caso, la función escribe información en el Registro, no en el archivo de inicialización; el cambio en la ubicación de almacenamiento no tiene ningún efecto en el comportamiento de la función.

Las funciones de perfil usan los pasos siguientes para buscar información de inicialización:

  1. Busque en el Registro el nombre del archivo de inicialización en la clave IniFileMapping .
  2. Busque el nombre de sección especificado por lpAppName. Se trata de un valor con nombre bajo la clave que tiene el nombre del archivo de inicialización, o una subclave con este nombre, o bien el nombre no existirá como un valor o una subclave.
  3. Si el nombre de sección especificado por lpAppName es un valor con nombre, ese valor especifica dónde en el Registro encontrará las claves de la sección.
  4. Si el nombre de sección especificado por lpAppName es una subclave, los valores con nombre de esa subclave especifican dónde encontrará las claves de la sección en el Registro. Si la clave que busca no existe como un valor con nombre, habrá un valor sin nombre (que se muestra como <Sin nombre>) que especifica la ubicación predeterminada en el Registro donde encontrará la clave.
  5. Si el nombre de sección especificado por lpAppName no existe como un valor con nombre o como una subclave, habrá un valor sin nombre (que se muestra como <Sin nombre>) que especifica la ubicación predeterminada en el Registro donde encontrará las claves de la sección.
  6. Si no hay ninguna subclave o entrada para el nombre de sección, busque el archivo de inicialización real en el disco y lea su contenido.
Al examinar los valores del Registro que especifican otras ubicaciones del Registro, hay varios prefijos que cambian el comportamiento de la asignación de archivos .ini:
  • ! : este carácter obliga a todas las escrituras a ir al registro y al archivo .ini en el disco.
  • # : este carácter hace que el valor del Registro se establezca en el valor del archivo de .ini de Windows 3.1 cuando un nuevo usuario inicie sesión por primera vez después de la instalación.
  • @ : este carácter impide que las lecturas vayan al archivo .ini en el disco si los datos solicitados no se encuentran en el registro.
  • USR: : este prefijo significa HKEY_CURRENT_USER y el texto después del prefijo es relativo a esa clave.
  • SYS: : este prefijo significa HKEY_LOCAL_MACHINE\SOFTWAREy el texto después del prefijo es relativo a esa clave.

Nota

El encabezado winbase.h define WritePrivateProfileSection como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winbase.h (incluye Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

GetPrivateProfileSection

RegCreateKeyEx

RegSetValueEx

WriteProfileSection