我遇到了一个奇怪的问题,每次 Windows 启动时,我的环境变量似乎都无法正确加载。这实际上很难弄清楚发生了什么,我完全是靠运气才搞清楚的。我最初在重新启动或启动并尝试启动我的标准应用程序集时注意到了这个问题。特别是,我尝试启动 Eclipse,但它无法启动,并且表现得好像我没有 JDK 一样。
在对此进行故障排除时,我会尝试回显我的环境变量(特别是 Path),然后我会得到以下结果:
C:\Windows\System32>echo %PATH%
C:\Windows\system32\NV;.;
此时,我会检查我的环境变量,它们看起来没问题。过了一会儿,我注意到,在我执行此检查后,变量会正常回显:
C:\Windows\System32>echo %PATH%
C:\Program Files...[许多语句]...;C:\apache-maven-3.0.4\bin
据我所知,进入环境变量会强制它们重新加载或刷新。我不清楚启动时如何加载环境变量,但看起来这个过程不起作用。这是我的工作电脑,有很多后台脚本在启动时运行,所以我怀疑这可能是罪魁祸首。
如果有人知道这里可能发生了什么,我将非常感激您的反馈,但我主要想知道是否有人知道在启动时手动强制刷新这些变量的方法?我可以在启动时甚至在几个关键应用程序前运行一个小脚本,以确保环境变量已加载,这将是很棒的。提前感谢您的任何意见!
答案1
有些包含命令行实用程序Windows 资源工具包称为设置它允许您对环境变量进行永久更改,而不是临时更改。它可以在批处理文件中使用,将PATH
环境变量设置为您想要的值。
答案2
我似乎记得几个月前有一款软件从环境变量中提取许可证信息时遇到过这个问题。我们一直在设置 USERS 变量,但由于某种原因,它们并没有保持一致。我最终创建了新的 SYSTEM 变量(不会根据当前用户而改变),从那以后我们就没有遇到任何问题了。
或者您可以创建一个非常简单的批处理文件并将其放在您的 StartUp 文件夹中。
//删除,在命令窗口中设置的变量仅在该命令窗口实例中存在
VBscript 来救援!
Set wshShell = CreateObject( "WScript.Shell" )
Set wshSystemEnv = wshShell.Environment( "SYSTEM" )
' Display the current value
' comment out to remove dialog box
WScript.Echo "MyVariable=" & wshSystemEnv( "MyVariable" )
wshSystemEnv( "MyVariable" ) = "MyNewValue"
' WScript.Echo "MyVariable=" & wshSystemEnv( "MyVariable" )
' Delete the environment variable
' uncomment to enable
'wshSystemEnv.Remove( "MyVariable" )
Set wshSystemEnv = Nothing
Set wshShell = Nothing
保存为以 ned 为扩展名的 *.VBS 文件