zoukankan      html  css  js  c++  java
  • 输出进程相关联的环境变量信息(使用GetEnvironmentStrings取得信息,然后使用StringCchCopyN和StringCchPrintf保证字符串不会越界)

    [cpp] view plain copy
     
    1. void DumpEnvironmentStrings()  
    2. {  
    3. #define MAX_ENVIRONMENT_NAME_LENGTH     (128)  
    4. #define MAX_ENVIRONMENT_VALUE_LENGTH    (1024)  
    5.     LPTSTR lpszEnvString = GetEnvironmentStrings();  
    6.     if(NULL == lpszEnvString)  
    7.     {  
    8.         return ;  
    9.     }  
    10.   
    11.     TCHAR* pEnvBlock = lpszEnvString;  
    12.     const TCHAR szToken = _T('=');  
    13.     TCHAR szName[MAX_ENVIRONMENT_NAME_LENGTH] = {0};  
    14.     TCHAR szValue[MAX_ENVIRONMENT_VALUE_LENGTH] = {0};  
    15.     while('' != *pEnvBlock)  
    16.     {  
    17.         if(szToken == *pEnvBlock)  
    18.         {  
    19.             pEnvBlock += _tcslen(pEnvBlock) + 1;  
    20.             continue;  
    21.         }  
    22.         TCHAR* pToken = _tcschr(pEnvBlock, szToken);  
    23.         if(NULL == pToken)  
    24.         {  
    25.             break;  
    26.         }  
    27.         memset(szName, 0, sizeof(szName));  
    28.         memset(szValue, 0, sizeof(szValue));  
    29.         StringCchCopyN(szName, _countof(szName), pEnvBlock, pToken - pEnvBlock);  
    30.         StringCchPrintf(szValue, _countof(szValue), _T("%s"), pToken + 1);  
    31.         _tprintf(_T("%s : %s "), szName, szValue);  
    32.         pEnvBlock += _tcslen(pEnvBlock) + 1;  
    33.     }  
    34.     FreeEnvironmentStrings(lpszEnvString);  
    35.     lpszEnvString = NULL;  
    36. }  
    37.   
    38. // 测试代码  
    39. #include "stdafx.h"  
    40. #include <Windows.h>  
    41. #include <strsafe.h>  
    42.   
    43. int _tmain(int argc, _TCHAR* argv[])  
    44. {  
    45.     DumpEnvironmentStrings();  
    46.     return 0;  
    47. }  
     
     http://blog.csdn.net/visualeleven/article/details/8122081
  • 相关阅读:
    多线程22:线程池
    多线程21:信号灯法
    多线程20:管程法
    多线程19:生产者消费者模式
    多线程18:Lock锁
    多线程17:死锁
    多线程16:CopyOnWriteArrayList
    多线程15:线程同步
    多线程14:三大不安全案例
    业余草 maven异常:Updating Maven Project 的统一解决方案
  • 原文地址:https://www.cnblogs.com/findumars/p/6002320.html
Copyright © 2011-2022 走看看