- 帖子
- 675
- 积分
- 3226
- 技术
- 75
- 捐助
- 101
- 注册时间
- 2009-4-10
|
风险倒是没有什么风险,只是有的情况失效
如果你使用的变量环境不是很大,请放心使用mach.exe
如果过大也不会有风险,只是会失效。
已经知道是怎么回事了,是因为变量空间过大后,cmd.exe增加申请了内存,并且改变了存放的地址,特别是开启了变量延迟后,变化更大,每执行一次setlocal ... 和endlocal
都会改变当前活动变量环境的地址,看来需要确定的是存放当前活动的环境变量指针的位置。
经过一翻查找,未果。
现在可以知道的是:当环境变量空间超过一定容量后,起始地址就从:008e0000H开始,连续存放,开启变量延迟后,最新活动变量在最后,各个环境变量所占内存最小单位为10000H,可以从008e0000H开始一直接搜索到最活动环境变量为止,来找到当前活动变量段的地址,只是效率问题。
最好的方法还是能找到存放指针的位置。 |
|