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 . . .

 

 

C and C++ Programming Resources | C & C++ Code Example Index