Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ortam yollarını kullanarak dosya arar. 'nin _searchenv _wsearchenvbu sürümleri, CRT'deki Güvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmelerine sahiptir.
Önemli
Bu API, Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz. Daha fazla bilgi için bkz. Evrensel Windows Platformu uygulamalarında desteklenmeyen CRT işlevleri.
Sözdizimi
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
Parametreler
filename
Aranacak dosyanın adı.
varname
Aranacak ortam.
pathname
Tam yolu depolamak için arabellek.
numberOfElements
Arabelleğin pathname boyutu.
Dönüş değeri
Başarılı olursa sıfır; hatayla ilgili bir hata kodu.
Boş bir dizeyse filename , dönüş değeri olur ENOENT.
Hata koşulları
filename |
varname |
pathname |
numberOfElements |
Dönüş değeri | İçeriği pathname |
|---|---|---|---|---|---|
| herhangi bir | herhangi bir | NULL |
herhangi bir | EINVAL |
yok |
NULL |
herhangi bir | herhangi bir | herhangi bir | EINVAL |
değiştirilmedi |
| herhangi bir | herhangi bir | herhangi bir | <= 0 | EINVAL |
değiştirilmedi |
Bu hata koşullarından herhangi biri oluşursa, Parametre doğrulama bölümünde açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, bu işlevler olarak EINVAL ayarlanır errno ve döndürürEINVAL.
Açıklamalar
Yordam, _searchenv_s belirtilen etki alanındaki hedef dosyayı arar. Değişkenvarname, , LIBve INCLUDEgibi PATHdizin yollarının listesini belirten herhangi bir ortam veya kullanıcı tanımlı değişken olabilir. Büyük _searchenv_s /küçük harfe duyarlı olduğundan ortam varname değişkeninin büyük/küçük harfle eşleşmesi gerekir. varname İşlemin ortamında tanımlanan bir ortam değişkeninin adıyla eşleşmiyorsa işlev sıfır döndürür ve pathname değişken değişmez.
Yordam önce geçerli çalışma dizinindeki dosyayı arar. Dosyayı bulamazsa, ortam değişkeni tarafından belirtilen dizinler aracılığıyla sonrakine bakar. Hedef dosya bu dizinlerden birindeyse, yeni oluşturulan yol içine pathnamekopyalanır. filename Dosya bulunamazsa boş pathname bir null ile sonlandırılan dize içerir.
Arabellek, pathname oluşturulacak yol adının tam uzunluğuna uyum sağlamak için en az _MAX_PATH karakter uzunluğunda olmalıdır. Aksi takdirde, _searchenv_s arabellek taşması pathname beklenmeyen davranışa neden olabilir.
_wsearchenv_s , öğesinin _searchenv_sgeniş karakterli bir sürümüdür; için bağımsız değişkenler _wsearchenv_s geniş karakterli dizelerdir. _wsearchenv_s ve _searchenv_s aksi takdirde aynı şekilde davran.
C++'ta bu işlevlerin kullanılması şablon aşırı yüklemeleriyle basitleştirilir; aşırı yüklemeler arabellek uzunluğunu otomatik olarak çıkarabilir (boyut bağımsız değişkeni belirtme gereksinimini ortadan kaldırır) ve eski, güvenli olmayan işlevleri yeni ve güvenli karşılıklarıyla otomatik olarak değiştirebilir. Daha fazla bilgi için bkz . Güvenli şablon aşırı yüklemeleri.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Genel metin yordamı eşlemeleri
| Tchar.h yordamı | _UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
|---|---|---|---|
_tsearchenv_s |
_searchenv_s |
_searchenv_s |
_wsearchenv_s |
Gereksinimler
| Yordam | Gerekli başlık |
|---|---|
_searchenv_s |
<stdlib.h> |
_wsearchenv_s |
<stdlib.h> veya <wchar.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// 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 );
}
Path for CL.EXE:
C:\Program Files\Microsoft Visual Studio 2010\VC\BIN\CL.EXE
Ayrıca bkz.
Dizin denetimi
_searchenv, _wsearchenv
getenv, _wgetenv
_putenv, _wputenv