다음을 통해 공유


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에 반환됩니다.

확장된 문자열이 버퍼에 비해 너무 크면 FALSE HIWORD에 반환되고 LOWORD의 cchSrc .

발언

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

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

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

  • ALLUSERSPROFILE
  • APPDATA
  • COMPUTERNAME
  • LOCALAPPDATA
  • NUMBER_OF_PROCESSORS
  • 운영 체제
  • PROCESSOR_ARCHITECTURE
  • PROCESSOR_IDENTIFIER
  • PROCESSOR_LEVEL
  • PROCESSOR_REVISION
  • ProgramData
  • ProgramFiles
  • 공공의
  • SystemDrive
  • SystemRoot
  • USERPROFILE
  • windir
다음은 대화형 애플리케이션에서만 사용할 수 있습니다.
  • HOMEDRIVE
  • HOMEPATH
  • LOGONSERVER
  • USERDOMAIN
  • USERNAME
파일 시스템 폴더에 해당하는 환경 변수를 동등한 CSIDL 매핑하거나 KNOWNFOLDERID 값은 SHGetFolderLocation 또는 SHGetKnownFolderPath통해 가져올 수 있습니다. 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를 UNICODE 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한 규칙을 참조하세요.

요구 사항

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