다음을 통해 공유


DoEnvironmentSubstA 함수(shellapi.h)

[이 함수는 이전 버전과의 호환성을 위해서만 유지됩니다. 대신 ExpandEnvironmentStrings를 사용합니다.]

하나 이상의 환경 변수에 대한 참조가 포함된 입력 문자열을 구문 분석하고 완전히 확장된 값으로 대체합니다.

구문

DWORD DoEnvironmentSubstA(
  [in, out] LPSTR pszSrc,
            UINT  cchSrc
);

매개 변수

[in, out] pszSrc

형식: LPTSTR

각각 다음 형식의 하나 이상의 환경 변수에 대한 참조를 포함하는 null로 끝나는 문자열에 대한 포인터입니다. 대/소문자가 무시됩니다.

%VariableName%

'%' 문자로 묶이지 않은 문자열의 모든 문자는 무시되고 변경되지 않고 반환됩니다. 따라서 문자열에 여러 환경 변수가 포함된 경우 공백 또는 구분 기호를 포함하여 '%' 이외의 문자를 구분 기호로 사용할 수 있습니다.

이 함수가 성공적으로 반환되면 각 %VariableName%이 확장된 값으로 바뀝니다. 대체 규칙은 명령 인터프리터에서 사용하는 규칙과 동일합니다. 시스템에서 변수 이름을 찾을 수 없는 경우 %variableName%은 항목에 제출될 때 그대로 유지됩니다.

확장된 문자열이 버퍼에 비해 너무 커서 이 함수가 실패하면 이 버퍼의 내용은 변경되지 않습니다.

cchSrc

형식: UINT

pszSrc가 가리키는 버퍼의 크기(문자)입니다. 버퍼는 반환된 문자열을 저장할 수 있을 만큼 커야 합니다.

반환 값

형식:DWORD

확장된 문자열이 버퍼에 맞으면 TRUE 가 HIWORD에 반환되고 새 pszSrc 의 길이(문자)가 LOWORD에 반환됩니다.

확장된 문자열이 버퍼에 비해 너무 크면 LOWORD 의 HIWORD 및 cchSrc 에 FALSE가 반환됩니다.

설명

매개 변수에는 유효한 NULL 이 아닌 값이 포함되어야 합니다. 이러한 값의 유효성을 검사해야 합니다. 이렇게 하지 않으면 예기치 않은 결과가 발생할 수 있습니다.

pszSrc에서 반환되는 문자열은 일반적으로 입력 문자열보다 길기 때문에 버퍼가 확장된 버전의 문자열을 보유할 만큼 충분히 큰지 확인합니다. ANSI 문자열에 대한 cchSrc 버퍼의 할당된 크기는 유니코드 문자열의 버퍼보다 커야 합니다. ANSI 문자열을 처리할 때 수식 버퍼 크기 = 문자열 길이 + null 문자 종료 + 1 을 사용하여 최소 올바른 버퍼 크기를 결정합니다.

사용자 또는 애플리케이션에서 환경 변수를 추가할 수 있으므로 전체 목록은 시스템에 종속됩니다. 다음 환경 변수는 표준이며 대화형 애플리케이션과 서비스 모두에서 사용할 수 있습니다.

  • ALLUSERSPROFILE
  • APPDATA
  • Computername
  • LOCALAPPDATA
  • NUMBER_OF_PROCESSORS
  • OS
  • PROCESSOR_ARCHITECTURE
  • PROCESSOR_IDENTIFIER
  • PROCESSOR_LEVEL
  • PROCESSOR_REVISION
  • ProgramData
  • ProgramFiles
  • PUBLIC
  • SystemDrive
  • SystemRoot
  • Userprofile
  • Windir
다음은 대화형 애플리케이션에서만 사용할 수 있습니다.
  • HOMEDRIVE
  • HOMEPATH
  • LOGONSERVER
  • USERDOMAIN
  • USERNAME
파일 시스템 폴더에 해당하는 환경 변수는 SHGetFolderLocation 또는 SHGetKnownFolderPath를 통해 동등한 CSIDL 또는 KNOWNFOLDERID 값에 매핑할 수 있습니다. CSIDL 및 KNOWNFOLDERID는 환경 변수 이름보다 더 안정적이며 가능하면 언제든지 사용해야 합니다.

예제

다음 콘솔 애플리케이션은 DoEnvironmentSubstW의 사용을 보여 줍니다.


#include "stdafx.h"
#include "windows.h"
#include "windef.h"
#include "shellapi.h"

int _tmain(int argc, _TCHAR* argv[])
{
	WCHAR szSrc[MAX_PATH] = L"%OS%;%HOMEPATH%";

	DWORD result = DoEnvironmentSubstW(szSrc, MAX_PATH);

	WORD success = HIWORD(result);
	WORD string_length = LOWORD(result);

	return 0;
}

참고

shellapi.h 헤더는 DOEnvironmentSubst를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 shellapi.h
라이브러리 Shell32.lib
DLL Shell32.dll(버전 4.0 이상)