欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Perl操作系统环境变量的脚本代码

程序员文章站 2022-10-08 09:50:56
如何用perl脚本操作系统环境变量呢? 想必很多朋友马上就会想到perl中提供的$env这个特殊的哈希变量,对,在$env中完全可以获取到一些系统变量。怎么获取呢?比如想...

如何用perl脚本操作系统环境变量呢?

想必很多朋友马上就会想到perl中提供的$env这个特殊的哈希变量,对,在$env中完全可以获取到一些系统变量。怎么获取呢?比如想要知道path这个系统环境变量的内容,我们可以通过$env{'path'} 来获取。如果想设置path这个环境变量呢,哈,使用$env{'path'}=‘c:\windows\system32'来设置。想获取所有的环境变量列表也很简单,哈希遍历不就可以了~

其实,本文中真正想问的是,你在通过上述方法设置了一个环境变量后,右击"我的电脑"的属性,选中高级选项卡后查看的path变量值真的改变了吗?其实,细心的你会发现,完全没变!但千万不要抱怨perl欺骗了你,它其实并没有欺骗你,而是你没有真正的理解。其实,path变量可以通过设置$env{'path'}来设置,但是这个设置所引起的改变只是session级别的,即你程序级别的。如果还不理解的话,可以想象成打开一个cmd后,输入set path="c:\\royen"所引起的效果,即在这个窗口中运行过程中path环境变量是"c:\\royen",而你再打开一个cmd后的新的窗口的path变量则会发现完全不是”c:\\royen“;

所以想要真正的添加或者改变一个系统环境变量,我们需要求助于注册表帮忙。只要找到环境变量在注册表中存储的位置即可。
一般系统变量可以在注册表 hkey_local_machine\system\currentcontrolset\control\session manager\environment下面可以找到。

实现:    

复制代码 代码如下:

my $loc="system\\currentcontrolset\\control\\session manager\\environment";
my $regkey;
$hkey_local_machine->open($loc,$regkey) || die "open registry fail,information:$!\n";
$regkey->setvalueex("perllib",0,reg_sz,"c:\\staf\\bin;c:\\staf\\bin\\perl58");

添加环境变量后,记得重启下机器,以使其生效。