1
我希望能够设置一个系统环境变量在Perl和我写了下面的脚本(从this idea启发)来实现:如何在Perl中设置Win32系统环境变量?
use Win32;
use Win32::API;
use Win32::OLE qw(in);
my $machine = ".";
my $WMIServices = Win32::OLE->GetObject ("winmgmts:{impersonationLevel=impersonate,(security)}//$machine/root/cimv2") || die;
my $objVariable = $WMIServices->Get("Win32_Environment")->SpawnInstance_;
$objVariable->{Name}="NewOSType";
$objVariable->{UserName} = "<System>";
$objVariable->{VariableValue} = "LAMBDA";
$objVariable->Put_;
不过,我不是在Perl的专家,我想了解专家对此代码的看法。这是完成这个最好的方法吗?
我不在是Perl或Windows的专家。我建议(以及专家也会)在代码中使用'严格'和'使用警告'。这被认为是良好的做法,并会节省您的时间。 – 2010-10-01 06:59:18
在Unix上,您执行'$ ENV {VARIABLENAME} =“选择的值”;'。 我不知道在Windows上不这样做的原因,但它部分取决于'系统环境变量'的含义。我怀疑你可能会试图篡改注册表。为此,您需要准确的输入。 – 2010-10-01 07:01:33
@Jonathan,系统环境变量,我的意思是你可以在计算机属性>高级>环境变量>系统中找到的环境变量。即使在系统重新启动后,这些变量仍然存在;但是,如果我们执行$ ENV {VARIABLENAME} =“选定的值”,那么该变量仅对当前会话有效。 – Santhosh 2010-10-01 08:17:58