环境变量妙用

个人知识库

Author: 刘杰文, Date: 2023-5-8 20:40 +0800, Categories: , Tags:

环境变量妙用

本文讨论在Windows环境下的环境变量的妙用。

[toc]


  1. Redirect calls of programs and commands

Redirect calls of programs and commands

重定向程序和命令的调用

举个情景:当你使用cmd时,你会用到一些命令,比如copy, systeminfo等。当你想要运行其他的程序而非预设的程序,通常的做法是:在某个文件夹下准备好同名的批处理脚本或程序,然后在这个位置运行命令

举个例子:你要运行自己的systeminfo命令,你可以在D:\somefolder\systeminfo中准备好systeminfo.bat,然后打开cmd窗口,定位到那个文件夹:cd /d D:\somefolder\systeminfo,然后直接运行systeminfo即可。

这样是可行的是因为Windows系统优先在当前位置查找是否存在相应的文件,如果没有才去以别的方式查找,比如从环境变量中。

上面这个例子是可行的,但是并不总是完美,因为命令行窗口会显示当前的位置。你当然可以选择关闭回显或者把文件夹名字弄得奇奇怪怪猜不出来,但总归不是那么完美,不是吗?当我们打开一个新的窗口,它的位置往往是类似于:C:\Users\HPC:\Windows\system32。如果你要不在对应的位置运行命令,那么搜索不到的结果就是运行环境变量中查找到的预设的程序。你将不得不输入你要的程序的路径,但这就暴露了。

以systeminfo命令为例,当前位置在:C:\Users\HP,此时要调用自己的程序,不得不输入:D:\somefolder\systeminfo\systeminfo.bat而非最初的样子:systeminfo

这里的妙用就是利用环境变量使得你可以输入后者正常运行,这就达到了完美的伪装。以下教程开始

  1. 右键“此电脑”-》属性,或者设置-》系统-》关于,打开“高级系统设置”,转到“高级”,点击以打开“环境变量”。

    此时我们会看到窗口呈现两栏,上面是用户变量,下面是系统变量。

  2. 在“系统变量”中选中PATH,点击“编辑”,在新窗口继续操作。

    我试过,系统变量的优先级更高,同样是在PATH环境变量中添加,添加在用户变量中没有效果,添加在系统变量中能生效。

  3. 在右侧的一列按钮中选则最上面的“新建”,输入指定文件夹。

    这里沿用上面的情景,那么应该输入:D:\somefolder\systeminfo

  4. 然后退出编辑状态,此时新添加的路径应该是位于最底端的,在右边的按钮列表中点击“上移”,把新添加的移到最上面。

    这么做是因为匹配机制是从环境变量PATH中从前往后(也就是从上到下)遍历,依次在路径的位置进行查找。所以放在最上面就能最先被匹配到,从而不会匹配到后面的预设的那个程序。


按照上述步骤操作就行了,教程结束。以下补充一点技术细节:

  1. 第四步上移路径时,其实只要放在C:\windows\system32之上就可以了。