使用Win32 :: Env perl模块,环境变量未在Windows中永久设置

时间:2019-05-30 11:48:33

标签: perl

Win32::Env模块用于临时设置环境变量。 我需要永久设置,请帮助

请帮助我将其设置为永久。 因为我希望它在另一个exe中使用。

use Win32::Env;

SetEnv(ENV_USER, 'AUTO_EXCEL_EXPORT', 'TRUE');

通过此代码,我只能在Windows中将环境变量设置为临时变量。 当我检查该变量的回显命令时,它没有显示。 因为它被设置为半永久值。

2 个答案:

答案 0 :(得分:2)

在Windows中分配/更改环境变量时,需要在新打开的Windows /应用程序看到更改之前通知Explorer子系统已发生更改。如果这没有发生,则必须重新启动,其他进程才能看到更改。

您在SYNOPSISWin32::Env中看到,他们接到了BroadcastEnv()的电话,该电话执行了上述通知任务。

在查看了模块的代码之后,作者正在注册表中设置变量,以便调用可以更正此问题。但是请注意,如果您在运行脚本时从cmd窗口运行内容,无论如何,您都必须关闭该窗口并打开一个新窗口以使更改生效。所有新窗口都应获取更新的环境。

示例:

use Win32::Env;

SetEnv(ENV_USER, 'AUTO_EXCEL_EXPORT', 'TRUE');

BroadcastEnv();

答案 1 :(得分:0)

 use Win32::Env; 
SetEnv(ENV_USER, 'AUTO_EXCEL_EXPORT', 'FALSE');
BroadcastEnv();
print "\n";
DelEnv(ENV_USER, 'AUTO_EXCEL_EXPORT');
print "\n";
SetEnv(ENV_USER, 'AUTO_EXCEL_EXPORT', 'TRUE');
BroadcastEnv(); 

if i run this code its setting only first ENV ( false ) value, in echo command why??????