脚本专栏 
首页 > 脚本专栏 > 浏览文章

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

(编辑:jimmy 日期: 2024/11/16 浏览:3 次 )

如何用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");

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

上一篇:cpan安装Net::SSH::Perl中遇到的一些问题
下一篇:perl的cgi高级编程介绍
一句话新闻
微软与英特尔等合作伙伴联合定义“AI PC”:键盘需配有Copilot物理按键
几个月来,英特尔、微软、AMD和其它厂商都在共同推动“AI PC”的想法,朝着更多的AI功能迈进。在近日,英特尔在台北举行的开发者活动中,也宣布了关于AI PC加速计划、新的PC开发者计划和独立硬件供应商计划。
在此次发布会上,英特尔还发布了全新的全新的酷睿Ultra Meteor Lake NUC开发套件,以及联合微软等合作伙伴联合定义“AI PC”的定义标准。