#include <locale.h>
#include <strsafe.h>
void DumpEnvironmentStrings()
{
#define MAX_ENVIRONMENT_NAME_LENGTH (128)
#define MAX_ENVIRONMENT_VALUE_LENGTH (1024)
PWCHAR lpszEnvString = GetEnvironmentStrings();
if (NULL == lpszEnvString)
{
return;
}
PWCHAR pEnvBlock = lpszEnvString;
const WCHAR szToken = L'=';
WCHAR szName[MAX_ENVIRONMENT_NAME_LENGTH] = { 0 };
WCHAR szValue[MAX_ENVIRONMENT_VALUE_LENGTH] = { 0 };
while ('\0' != *pEnvBlock)
{
if (szToken == *pEnvBlock)
{
pEnvBlock += wcslen(pEnvBlock) + 1;
continue;
}
WCHAR* pToken = wcschr(pEnvBlock, szToken);
if (NULL == pToken)
{
break;
}
memset(szName, 0, sizeof(szName));
memset(szValue, 0, sizeof(szValue));
StringCchCopyNW(szName, _countof(szName), pEnvBlock, pToken - pEnvBlock);
StringCchPrintfW(szValue, _countof(szValue), L"%s", pToken + 1);
printf("%S : %S\r\n\r\n", szName, szValue);
pEnvBlock +=wcslen(pEnvBlock) + 1;
}
FreeEnvironmentStrings(lpszEnvString);
lpszEnvString = NULL;
}
int main()
{
setlocale(LC_ALL, "chs");
DumpEnvironmentStrings();
return 0;
}
解析环境变量
于 2022-01-26 11:42:30 首次发布