Listing the Windows system's environment variables programmatically
Compiler: Visual C++ Express Edition 2005
Compiled on Platform: Windows Xp Pro SP2
Target platform: none, just for learning and fun
Header file: Standard and Windows
Additional library: Windows Platform SDK
Additional project setting: Set project to be compiled as C
Project -> your_project_name Properties -> Configuration Properties -> C/C++ -> Advanced -> Compiled As: Compiled as C Code (/TC)
Other info: non-CLR or unmanaged.
To do: Listing the Windows system's environment variables
To show: The various Windows threads and processes functions in Win32 C programming
// For WinXp
#define _WIN32_WINNT 0x0501
#include <windows.h>
#include <stdio.h>
void MyErrorExit(LPTSTR lpszMessage)
{
fprintf(stderr, "%s\n", lpszMessage);
// Exit peacefully...
ExitProcess(0);
}
int main(int argc, char argv[])
{
LPTSTR lpszVariable;
LPVOID lpvEnv;
// Get a pointer to the environment block.
lpvEnv = GetEnvironmentStrings();
// If the returned pointer is NULL, exit.
if (lpvEnv == NULL)
MyErrorExit(L"GetEnvironmentStrings() failed.");
else
printf("GetEnvironmentStrings() is OK.\n\n");
// Variable strings are separated by NULL byte, and the block is terminated by a NULL byte.
for (lpszVariable = (LPTSTR) lpvEnv; *lpszVariable; lpszVariable++)
{
while (*lpszVariable)
putchar(*lpszVariable++);
putchar('\n');
}
if(FreeEnvironmentStrings(lpvEnv) == 0)
printf("GetEnvironmentStrings() failed.\n");
else
printf("\nGetEnvironmentStrings() is OK.\n");
return 0;
}
Output example:
GetEnvironmentStrings() is OK.
=C:=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
=F:=F:\vc2005project\cplus\cplus
ALLUSERSPROFILE=C:\Documents and Settings\All Users.WINDOWS
APPDATA=C:\Documents and Settings\Johnny\Application Data
CLIENTNAME=Console
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=MYPERSONAL
ComSpec=C:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\Johnny
INCLUDE=c:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\include\
LIB=c:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Lib\
LOGONSERVER=\\MYPERSONAL
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Common Files\Adobe\AGL;C:\Progra
m Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Microsoft Visual Studio 8\;C:\Program Files\Micro
soft Visual Studio 8\VC\bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Model 3 Stepping 4, GenuineIntel
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0304
ProgramFiles=C:\Program Files
PROMPT=$P$G
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\DOCUME~1\Johnny\LOCALS~1\Temp
TMP=C:\DOCUME~1\Johnny\LOCALS~1\Temp
USERDOMAIN=MYPERSONAL
USERNAME=Johnny
USERPROFILE=C:\Documents and Settings\Johnny
VS71COMNTOOLS=c:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\
VS80COMNTOOLS=C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\
WecVersionForRosebud.A98=2
windir=C:\WINDOWS
_ACP_ATLPROV=C:\Program Files\Microsoft Visual Studio 8\VC\Bin\ATLProv.dll
_ACP_INCLUDE=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include;C:\Program Files\Micro
soft Visual Studio 8\VC\include;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include;C:\Program Files\
Microsoft Visual Studio 8\SDK\v2.0\include
_ACP_LIB=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib;C:\Program Files\Microsoft Visual
Studio 8\VC\lib;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib;C:\Program Files\Microsoft Visual
Studio 8\SDK\v2.0\lib;C:\Program Files\Microsoft Visual Studio 8\;C:\Program Files\Microsoft Visual Stud
io 8\lib
_ACP_PATH=C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin;C:\Program Files\Microsoft Visual
Studio 8\VC\bin;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\bin;C:\Program Files\Microsoft
Visual Studio 8\Common7\Tools\bin;C:\Program Files\Microsoft Visual Studio 8\Common7\tools;C:\Program Files\Microsoft
Visual Studio 8\Common7\ide;C:\Program Files\HTML Help Workshop;C:\Program Files\Microsoft Visual Stud
io 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\;C:
\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Common Files\Adobe\AGL;C:\Program Files
\Microsoft SQL Server\90\Tools\binn\
GetEnvironmentStrings() is OK.
Press any key to continue . . .