我在 Windows 2012 机器上运行 tomcat。
我需要在服务启动之前设置一个环境变量,以便我可以在 Web 应用程序中像这样用 Java 查询该变量:
String myVar = System.getenv("MY_VAR");
此变量不是 tomcat 变量。它是特定于我们应用程序的变量。
我没有在该问题的标签中包含 tomcat,因为这适用于任何服务;但是,我很高兴收到针对 tomcat 的特定答案。
这是我要求提供 tomcat 特定解决方案的问题: https://superuser.com/questions/1142406/setting-user-environment-variables-for-tomcat-on-windows
我使用 Windows 管理服务的标准方式,从“管理工具”->“服务”访问以启动和停止 tomcat。因此据我所知,我没有通常的控制权,我可以将环境变量放在 .bat 文件中,该文件也会启动服务器进程。
答案1
如果您想要为服务设置环境变量(无论以什么用户身份运行),您可以在注册表中执行此操作:HKLM\SYSTEM\CurrentControlSet\服务。
下面是向 Windows 更新服务添加两个环境变量的简单示例regedit
(仅用于演示目的,这些不会影响服务):
FOO=Bar
KEY=SGVsbG8gV29ybGQhIQ==
启动(或重新启动,如果它已经在运行)服务。然后我们可以使用 Process Explorer 查看环境变量是否可用:
答案2
如果您寻求的是本地 Server 2012 环境变量,则可以使用 PowerShell 创建新的系统或用户环境变量,并确保以管理员身份运行 PowerShell。
机器变量:
[Environment]::SetEnvironmentVariable('Name','Value','Machine')
用户变量:
[Environment]::SetEnvironmentVariable('Name','Value','User')
要检查当前环境变量,请使用以下 PowerShell 命令
Get-Childitem ENV:
注意:您需要关闭 PowerShell 并打开一个新实例才能查看新创建的环境变量。