您的位置:首页 > 其它

控制台获取、更改环境变量

2012-09-20 16:02 405 查看
#include <windows.h>

#include <stdio.h>

#include <tchar.h>

void DumpEnvVariables(PTSTR pEnvBlock[]);

void myDumpEnvVariables0(PTSTR pEnvBlock[]);

void myDumpEnvVariables1(PTSTR pEnvBlock[]);

void PrintEnvironmentVariable(PCTSTR pszVariableName);

int _tmain(int argc,TCHAR *argv[],TCHAR *envp[])

{

DumpEnvVariables(envp);

//myDumpEnvVariables0(envp);

//myDumpEnvVariables1(envp);

PrintEnvironmentVariable(L"TEMP");

int i;

scanf("jjjj",&i);

return 0;

}

void PrintEnvironmentVariable(PCTSTR pszVariableName) {

PTSTR pszValue = NULL;

// Get the size of the buffer that is required to store the value

DWORD dwResult = GetEnvironmentVariable(pszVariableName, pszValue, 0);

if (dwResult != 0) {

// Allocate the buffer to store the environment variable value

DWORD size = dwResult * sizeof(TCHAR);

pszValue = (PTSTR)malloc(size);

GetEnvironmentVariable(pszVariableName, pszValue, size);

_tprintf(TEXT("%s=%s\n"), pszVariableName, pszValue);

free(pszValue);

}

else {

_tprintf(TEXT("'%s'=<unknown value>\n"), pszVariableName);

}

}

void DumpEnvVariables(PTSTR pEnvBlock[])

{

int current =0;

PTSTR *pElement=pEnvBlock;

PTSTR pCurrent=NULL; //初始化为NULL,避免成为野指针

while(pElement!=NULL)

{

pCurrent=(PTSTR)(*pElement);

if (pCurrent==NULL) //如果是最后一项,则将pElement赋值为NULL,使循环退出

{

pElement=NULL; //循环退出的条件

}

else

{

_tprintf(TEXT("[%u] %s\r\n"),current,pCurrent);

current++;

pElement++;

}

}

}

void myDumpEnvVariables0(PTSTR pEnvBlock[]) //自己改写的版本,避免了循环中的if判断

{

int current=0;

PTSTR *pElement=pEnvBlock;

PTSTR pCurrent=NULL;

pCurrent=*pElement; //先赋值一次

_tprintf(TEXT("\r\n getEnv by myDumpEnvVariables0\r\n"));

while(pCurrent!=NULL) //用pCurrent作为循环判断的变量

{

_tprintf(TEXT("[%u] %s\r\n"),current,pCurrent);

pElement++;

current++;

pCurrent=*pElement;

}

}

void myDumpEnvVariables1(PTSTR pEnvBlock[])//自己改写的版本,使程序更简洁,更易理解

{

int current=0;

PTSTR *pElement=pEnvBlock;

_tprintf(TEXT("\r\n getEnv by myDumpEnvVariables1\r\n"));

while(*pElement!=NULL) //用pCurrent作为循环判断的变量

{

_tprintf(TEXT("[%u] %s\r\n"),current,*pElement);

pElement++;

current++;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: