java设置环境变量小工具

本文介绍了一个Delphi应用程序如何通过修改注册表来设置系统级环境变量的方法,并提供了设置和扩展环境变量的具体实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

unit MainUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Registry;

type
  TfrmMain = class(TForm)
    btn1: TButton;
    edt1: TEdit;
    lbl1: TLabel;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

  function ExpandEnvironment(const strValue: string): string;
  function SetGlobalEnvironment(const envName, envValue: string; const isUser: Boolean = True): Boolean;

implementation

{$R *.dfm}

procedure TfrmMain.btn1Click(Sender: TObject);
var
  path:string;
begin
  SetGlobalEnvironment('JAVA_HOME',edt1.Text);
  SetGlobalEnvironment('CLASSPATH','.;%JAVA_HOME%/jre/lib/rt.jar;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib;');
  path := ExpandEnvironment('%PATH%');
  path := path + ';%JAVA_HOME%/bin';
  SetGlobalEnvironment('PATH',path);
end;

/// <summary>
///  设置系统级环境变量参数函数
/// </summary>
/// <param name="envName">环境变量名</param>
/// <param name="envValue">环境变量值</param>
/// <param name="isUser">为true表示只更新当前操作员的环境变量</param>
/// <returns></returns>
function SetGlobalEnvironment(const envName, envValue: string; const isUser: Boolean = True): Boolean;
resourcestring
  REG_MLOCATION ='System/CurrentControlSet/Control/Session Manager/Environment';  // 环境变量存储在注册表中的位置
  REG_ULOCATION = 'Environment';
begin
  with TRegistry.Create do
    try
      if isUser then // 设置当前用户的环境变量
        Result := OpenKey(REG_ULOCATION, True)
      else // 设置系统环境变量,对所有用户有效
      begin
        RootKey := HKEY_LOCAL_MACHINE;
        Result := OpenKey(REG_MLOCATION, True);
      end;

      if Result then
      begin
        WriteString(envName, envValue); // 设置注册表中环境变量的值

        SetEnvironmentVariable(PChar(envName), PChar(envValue)); // 更新当前进程的环境变量值

        SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('Environment')));
        // 发送消息通知所有上层的窗口,环境参数发生变化
      end;
    finally
      Free;
    end;
end;

/// <summary>
///  获取环境变量
/// </summary>
/// <param name="strValue">环境变量名</param>
/// <returns>环境变量值</returns>
function ExpandEnvironment(const strValue: string): string;
var
  chrResult: array[0..1023] of Char;
  wrdReturn: DWORD;
begin
  wrdReturn := ExpandEnvironmentStrings(PChar(strValue), chrResult, 1024);
  if wrdReturn = 0 then
    Result := strValue
  else
  begin
    Result := Trim(chrResult);
  end;
end;

end.

 

转载于:https://www.cnblogs.com/toosuo/p/3698587.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值