1、参考网址: C_C++ 获取系统环境变量方法. - algorithmic - 博客园.html(https://www.cnblogs.com/algorithmic/archive/2012/09/23/2698604.html)
// EnvConsole_VC.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <stdio.h> #include <stdlib.h> // ZC: 取某个环境变量 //int main() //{ // printf("PATH : %s\n", getenv("PATH")); // printf("HOME : %s\n", getenv("HOME")); // printf("ROOT : %s\n", getenv("ROOT")); // //} #include <stdio.h> //#include <unistd.h>// Posix #include <windows.h> // ZC: 遍历所有环境变量 //extern char **environ; //int main(int argc, char *argv[]) //{ // char **p = environ; // while (*p != NULL) // { // printf("%s (%p)\n", *p, *p); // *p++; // } // system("pause"); // return 0; //} #include <string> #include <vector> using namespace std; void SplitStr_ZZ(vector<string>& _vtr, char* _pc, char* _pcPattern); int WriteLog(char* _pcFullFileName, char* _pcWrite, int _iWriteLen, unsigned long * _pdwWritten); void Env_All_1(vector<string>& _vtr); void Env_All_2(vector<string>& _vtrOut, vector<string>& _vtrIn); int main(int argc, char *argv[]) { vector<string> vtr1; vector<string> vtr2; Env_All_1(vtr1); Env_All_2(vtr2, vtr1); string str; for (int i = 0; i < vtr2.size(); i++) //printf("%s\n", vtr2.at(i).c_str()); str += vtr2.at(i) + "\r\n"; char buf[256] = { 0 }; SYSTEMTIME sys; GetLocalTime(&sys); sprintf(buf, "D:\\HuanJingBianLiang.%02d%02d%02d.%d.txt", sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds); DWORD dwWriteLen = 0; WriteLog(buf, (char*)str.c_str(), str.length(), &dwWriteLen); } void Env_All_1(vector<string>& _vtr) { _vtr.clear(); char **p = environ; while (*p != NULL) { _vtr.push_back(string(*p)); //printf("%s (%p)\n", *p, *p); *p++; } } void Env_All_2(vector<string>& _vtrOut, vector<string>& _vtrIn) { _vtrOut.clear(); for (int i = 0; i < _vtrIn.size(); i++) { string str = _vtrIn.at(i); vector<string> vtr; SplitStr_ZZ(vtr, (char*)str.c_str(), (char*)"="); if (vtr.size() == 1) _vtrOut.push_back(vtr.at(0) + " :"); else if (vtr.size() == 2) { _vtrOut.push_back(vtr.at(0) + " :"); vector<string> vtr1; SplitStr_ZZ(vtr1, (char*)vtr.at(1).c_str(), (char*)";"); for (int j = 0; j < vtr1.size(); j++) _vtrOut.push_back("\t" + vtr1.at(j)); } else printf("Unhandled : %s\n", str.c_str()); } } int WriteLog(char* _pcFullFileName, char* _pcWrite, int _iWriteLen, unsigned long * _pdwWritten) { HANDLE hLogFile = CreateFileA(_pcFullFileName, GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_ALWAYS/*CREATE_NEW*/, 0, 0);// ZC: 存在:打开;不存在:创建 if (hLogFile == INVALID_HANDLE_VALUE) return GetLastError(); if (INVALID_SET_FILE_POINTER == SetFilePointer(hLogFile, 0, 0, FILE_END)) { int iErr = GetLastError(); CloseHandle(hLogFile); return iErr; } BOOL B = WriteFile(hLogFile, _pcWrite, _iWriteLen, _pdwWritten, NULL); if (!B) { int iErr = GetLastError(); CloseHandle(hLogFile); return iErr; } CloseHandle(hLogFile); return 0; }
2、
void SplitStr_ZZ(vector<string>& _vtr, char* _pc, char* _pcPattern) { _vtr.clear(); if ((_pc == NULL) || (_pcPattern == NULL)) return; char* pc = strtok(_pc, _pcPattern); while (pc != NULL) { _vtr.push_back(string(pc)); pc = strtok(NULL, _pcPattern); } }
3、
4、
5、