使用GetEnvironmentStrings()函数获取系统环境变量--(核心编程笔记2)

      使用GetEnvironmentStrings函数很简单,函数没有参数,返回值是一个字符串指针(PTSTR),指向环境变量的内存块。注意个这个内存块是只读的,如果需要改变环境变量需要使用SetEnvironment函数。而且是在使用完GetEnvironmentStrings之后,需要使用FreeEnvironmentStrings来释放。

     这里需要注意的问题有,首先是一个经常犯到的错误,就是在读取内存中的字符串的时候总是直接显示指针指向内容,例如在用delphi读取PE文件的相关内容的时候。这样做是不安全的,容易奔溃。正确的作法如同在使用createprocess()时一样,把要显示的内容复制到一个缓冲区中。

    其次是这里面的很多又涉及到几个字符串处理函数,如StringCbCopyN()和StringCchCopyN() 这两个是strncopy()的替代函数。MSDN中说使用完这两个函数后要使用FAILED和SUCCEEDED这两个宏来检测一下函数的返回状态。 _tcschr()这个函数的作用就相当于delphi里的copy函数,不过这里函数的的作用是返回一个函数指针,指向源字符串中子字符串的位置。_tcslen()函数返回一个字符串指针指向的字符串的字符数。

   总的来说这个代码主要涉及到的问题还是字符窜的处理。环境变量字符串的格式如下:

  =::=::\ =

VarName1=VarValue1\0

VarName2= VarValue2\0

VarName3=VarValue3\0

\0

第一个字符串肯定是=::=::

然后后面可能有几个以=开头的,但是这种字符串不作为环境变量

后面的字符串就很有规

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值