为服务设置环境变量

为服务设置环境变量

我在 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==

计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv 环境 REG_MULTI_SZ

启动(或重新启动,如果它已经在运行)服务。然后我们可以使用 Process Explorer 查看环境变量是否可用:

C:\WINDOWS\system32\svchost.exe -k netsvcs -p -s wuauserv

答案2

如果您寻求的是本地 Server 2012 环境变量,则可以使用 PowerShell 创建新的系统或用户环境变量,并确保以管理员身份运行 PowerShell。

机器变量:
[Environment]::SetEnvironmentVariable('Name','Value','Machine')
用户变量:
[Environment]::SetEnvironmentVariable('Name','Value','User')

要检查当前环境变量,请使用以下 PowerShell 命令

Get-Childitem ENV:

注意:您需要关闭 PowerShell 并打开一个新实例才能查看新创建的环境变量。

相关内容