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

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

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

(0)

相关推荐

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

    如何用Perl脚本操作系统环境变量呢? 想必很多朋友马上就会想到Perl中提供的$ENV这个特殊的哈希变量,对,在$ENV中完全可以获取到一些系统变量.怎么获取呢?比如想要知道Path这个系统环境变量的内容,我们可以通过$ENV{'Path'} 来获取.如果想设置Path这个环境变量呢,哈,使用$ENV{'Path'}='C:\Windows\System32'来设置.想获取所有的环境变量列表也很简单,哈希遍历不就可以了~ 其实,本文中真正想问的是,你在通过上述方法设置了一个环境变量后,右击"我

  • 通过批处理bat设置系统环境变量的实现代码

    在软件运行过程中,可能需要配置计算机的环境变量,在这里分为两种情况: 一:增加或修改环境变量只在当前软件环境中使用 如我们设置Java的环境变量: set CLASSPATH=%CLASSPATH%;C:\LS\JAVA.JAR 保持原有的不变  自己加上要加的jar包,用分号隔开,当然你也可以写到前面,如:set CLASSPATH=D:/My_Path;%CLASSPATH% set JAVA_HOME=  这里的路径自己写吧 不过这样写只对你打开的这个dos窗口有效,也就是你只有在这个窗口

  • perl去除重复内容的脚本代码(重复行+数组重复字段)

    假如有这样的一段序列:1 2  1 2  2 1  1 3  1 4  1 5  4 1 我们需要得到如下的结果:1 3  1 5  2 1  4 1 那么,请借助以下的perl脚本来实现. 代码一: 复制代码 代码如下: #!/bin/perluse strict;  use warnings;  my $filename;  my %hash;  my @information;  my $key1;  my $key2;  print "please put in the file lik

  • perl实现blog备份的脚本代码

    之前总不重视自己的博客,上回一丢才心疼,现在重视起来,决定定期备份sql.写个小脚本如下: 复制代码 代码如下: #!/usr/bin/perluse warnings;use strict;use MySQL::Backup;use Mail::Sender;open my $tmp_sql, '>', "backup.sql";my $mb = new MySQL::Backup('dbname', 'localhost', 'dbuser', 'dbpasswd', {'U

  • idea向System.getenv()添加系统环境变量的操作

    idea如何设置系统环境变量 背景 最近在接入阿里云的短信服务,在使用阿里云短信服务的SDK过程中想看看SDK中HttpUtil 中 public static String debugHttpRequest(HttpRequest request) { if (isHttpDebug) { StringBuilder debugString = new StringBuilder(); String sysUrl = request.getSysUrl(); URL url = null; t

  • perl操作MongoDB报错undefined symbol: HeUTF8解决方法

    因为shell操作mongo比较麻烦,只好尝试使用perl操作mongo,perl需要操作mongodb必须先安装相应的驱动,大部分人使用cpan安装,个人觉得太麻烦,使用cpanm安装perl模块. 复制代码 代码如下: # cpanm MongoDB --> Working on MongoDB Fetching http://www.cpan.org/authors/id/F/FR/FRIEDO/MongoDB-0.702.1.tar.gz ... OK Configuring Mongo

  • 最短的javascript:地址栏载入脚本代码

    不过脚本比较长的时候,需要复制密密麻麻一大段到地址栏里,显得很不美观,而且脚本修改起来也很不容易.因此一般先把脚本写在单独一个文件里,然后用javascript: 的形式动态载入脚本到页面中.不少网页插件都是用这个方法载入. 平时,我们用最简单的代码实现动态载入: 复制代码 代码如下: javascript:var o=document.createElement('script');o.src='...';document.body.appendChild(o);void(0) 当然,这对于载

  • 用PHP书写安全的脚本代码

    在PHP 4.2中,他们取消了那种老的做法!正如我将在这篇文章中解释的那样,作出这样的变化的目的是出于安全性的考虑.我们将研究PHP在处理表单提交及其它数据时的新的做法,并说明为什么这样做会提高代码的安全性. 这里有什么错误? 看看下面的这段PHP脚本,它用来在输入的用户名及口令正确时授权访问一个Web页面: 复制代码 代码如下: <?php // 检查用户名及口令 if ($username == 'kevin' and $password == 'secret') $authorized =

  • WINDOWS脚本实践:为SAP补丁制作的VBS脚本代码

    脚本主要功能包括: 注册表读取与修改  文件内容修改如HOSTS.SERVICES文件  文件属性修改和文件复制  系统环境变量设置  等,仅供参考 复制代码 代码如下: 'SAP设置脚本  '编写:SCZ 2005.04.20  '最后修改日期: 2005.04.22  '必须存在目录: BW(补丁文件) 和 登入界面  '========================================================================  '全局变量.处理过程 

  • Linux通用java程序启动脚本代码实例

    虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的通用shell脚本. 只需要修改一些配置变量,就可以用来做起动脚本了. 并且除了能起动.还支持关闭.重启.查看是否正在运行的功能. start函数中,nohup部分其实也可以提出来放入一个配置变量中.这里没有修改直接贴上作者的原文 脚本代码如下: #!/bin/sh #该脚本为Linux下启动java程序的通用脚本.即可以作为开机自启动service脚

随机推荐