Compartir a través de


_searchenv_s, _wsearchenv_s

Buscar un archivo mediante rutas del entorno.Éstas son versiones de _searchenv, _wsearchenv con mejoras de seguridad como se describe en Características de seguridad en CRT.

Nota importanteImportante

Esta API no se puede utilizar en las aplicaciones que se ejecutan en tiempo de ejecución de Windows.Para obtener más información, vea Funciones CRT no compatibles con /ZW.

errno_t _searchenv_s(
   const char *filename,
   const char *varname,
   char *pathname,
   size_t numberOfElements
);
errno_t _wsearchenv_s(
   const wchar_t *filename,
   const wchar_t *varname,
   wchar_t *pathname,
   size_t numberOfElements
);
template <size_t size>
errno_t _searchenv_s(
   const char *filename,
   const char *varname,
   char (&pathname)[size]
); // C++ only
template <size_t size>
errno_t _wsearchenv_s(
   const wchar_t *filename,
   const wchar_t *varname,
   wchar_t (&pathname)[size]
); // C++ only

Parámetros

  • [in] filename
    Nombre del archivo que se va a buscar.

  • [in] varname
    Entorno para buscar.

  • [out] pathname
    Búfer para almacenar la ruta completa.

  • [in] numberOfElements
    Tamaño del búfer de pathname.

Valor devuelto

Cero si correctamente; un código de error del error.

Si filename es una cadena vacía, el valor devuelto es ENOENT.

Condiciones de error

filename

varname

pathname

numberOfElements

Valor devuelto

Contenido de pathname

any

any

NULL

any

EINVAL

no disponible

NULL

any

any

any

EINVAL

no cambiado

any

any

any

<= 0

EINVAL

no cambiado

Si cualquiera de estas condiciones de error se, se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Si la ejecución puede continuar, este errno establecido funciones a EINVAL y a EINVAL return.

Comentarios

Las búsquedas de la rutina de _searchenv_s para el archivo de destino en el dominio especificado.La variable de varname puede ser cualquier entorno o variable definida por el usuario que especifica una lista de rutas de acceso de directorio, como PATH, LIB, y INCLUDE.Dado que _searchenv_s distingue entre mayúsculas y minúsculas, varname debe coincidir con el caso de la variable de entorno.Si no coincide con varname el nombre de una variable de entorno definida en el entorno del proceso, la función devuelve cero y la variable de pathname no cambia.

La rutina busca primero el archivo en el directorio de trabajo actual.Si no encuentra el archivo, busca después a través de los directorios especificados por la variable de entorno.Si el archivo de destino está en uno de esos directorios, la ruta creada recientemente se copia en pathname.Si el archivo de filename no se encuentra, pathname contiene una cadena terminada en null vacía.

El búfer de pathname debe ser por lo menos caracteres de _MAX_PATH long para alojar el entero del nombre de ruta construido.Si no, _searchenv_s puede saturar el búfer de pathname da como resultado un comportamiento inesperado.

_wsearchenv_s es una versión con caracteres anchos de _searchenv_s; los argumentos de _wsearchenv_s son cadenas de caracteres._wsearchenv_s y _searchenv_s se comportan exactamente igual de otra manera.

En C++, mediante estas funciones es simplificado con sobrecargas de plantilla; las sobrecargas pueden deducir la longitud de búfer automáticamente (que elimina la necesidad de especificar un argumento de tamaño) y automáticamente pueden reemplazar anterior, funciones de no Secure con sus más recientes, seguros homólogos.Para obtener más información, vea Sobrecargas de plantilla de seguridad.

Asignaciones de la rutina de Genérico- texto

Rutina de Tchar.h

_UNICODE y _MBCS no definidos

_MBCS definido

_UNICODE definido

_tsearchenv_s

_searchenv_s

_searchenv_s

_wsearchenv_s

Requisitos

Rutina

Encabezado necesario

_searchenv_s

<stdlib.h>

_wsearchenv_s

<stdlib.h> o <wchar.h>

Para obtener más información de compatibilidad, vea Compatibilidad en la Introducción.

Ejemplo

// crt_searchenv_s.c
/* This program searches for a file in
 * a directory specified by an environment variable.
 */

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   char pathbuffer[_MAX_PATH];
   char searchfile[] = "CL.EXE";
   char envvar[] = "PATH";
   errno_t err;

   /* Search for file in PATH environment variable: */
   err = _searchenv_s( searchfile, envvar, pathbuffer, _MAX_PATH );
   if (err != 0)
   {
      printf("Error searching the path. Error code: %d\n", err);
   }
   if( *pathbuffer != '\0' )
      printf( "Path for %s:\n%s\n", searchfile, pathbuffer );
   else
      printf( "%s not found\n", searchfile );
}
  

Equivalente en .NET Framework

No es aplicable Para llamar a la función estándar de C, utilice PInvoke. Para obtener más información, vea La invocación de plataforma ejemplos.

Vea también

Referencia

Control de directorio

_searchenv, _wsearchenv

getenv, _wgetenv

_putenv, _wputenv