控制台获取、更改环境变量
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++;
}
}
#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++;
}
}
相关文章推荐
- 获取和更改环境变量的值SetEnvironmentVariable()
- VC的控制台程序,如何获取输入参数和环境变量
- VC的控制台程序,如何获取输入参数和环境变量
- VC的控制台程序,如何获取输入参数和环境变量
- AS从控制台或者环境变量中获取签名文件密码的方法
- Windows命令行获取当前bat文件所在目录,添加永久系统环境变量的方法
- cgi程序常用环境变量及获取方法
- System.getProperties()获取系统环境变量
- java 获取系统变量(环境变量和设置变量)
- 170811、Java获取jdk系统环境变量
- 获取所有环境变量
- 更改环境变量
- GetEnvironmentVariable 获取系统环境变量
- pom.xml使用多套环境及变量获取(2)
- unix编程笔记一(atexit函数,环境变量,获取环境变量)
- 【Windows】Windows 8.1 系统下控制台命令SET实现环境变量的增加、修改、删除方法
- windows 下 双版本 JDK 更改环境变量切换失效
- 获取环境变量
- C/C++ 获取系统环境变量方法.
- java 获取系统变量(环境变量和设置变量)