22-07-2025, 06:06 AM
// Java JDK (system environment variable one-click setting tool) Delphi version source code is here
unit Unit2;
interface
uses
Registry, Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
Vcl.StdCtrls;
type
TForm2 = class(TForm)
btnSetEnv: TButton;
btnVerify: TButton;
edtJdkPath: TEdit;
lblStatus: TLabel;
procedure FormCreate(Sender: TObject);
procedure btnSetEnvClick(Sender: TObject);
procedure btnVerifyClick(Sender: TObject);
private
function SetJavaEnvironment(const JdkPath: string): Boolean;
public
{ Public declarations }
end;
our
Form2: TForm2;
implementation
{$R *.dfm}
// Core function: set Java environment variables
function TForm2.SetJavaEnvironment(const JdkPath: string): Boolean;
our
Reg: TRegistry;
PathValue: string;
begin
Result := False;
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
// 1. Set JAVA_HOME
if Reg.OpenKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', True) then
begin
Reg.WriteString('JAVA_HOME', JdkPath);
Reg.CloseKey;
end;
// 2. Update PATH
if Reg.OpenKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', False) then
begin
PathValue := Reg.ReadString('Path');
if Pos(JdkPath + 'bin', PathValue) = 0 then
begin
PathValue := JdkPath + 'bin;' + PathValue;
Reg.WriteString('Path', PathValue);
end;
Reg.CloseKey;
end;
// Broadcast environment variable change notification
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, LPARAM(PChar('Environment')), SMTO_ABORTIFHUNG, 5000, nil);
Result := True;
except
on E: Exception do
lblStatus.Caption := 'Error:' + E.Message;
end;
Reg.Free;
end;
// Set environment variables
procedure TForm2.btnSetEnvClick(Sender: TObject);
begin
was JdkPath: string;
begin
JdkPath := IncludeTrailingPathDelimiter(edtJdkPath.Text);
if not DirectoryExists(JdkPath) then
begin
lblStatus.Caption := 'Error: JDK path does not exist! ';
Exit;
end;
if not FileExists(JdkPath + 'bin\java.exe') then
begin
lblStatus.Caption := 'Error: java.exe not found';
Exit;
end;
if SetJavaEnvironment(JdkPath) then
lblStatus.Caption := 'Success: Environment variables have been set. Please restart the command line tool to verify.'
else
lblStatus.Caption := 'Error: Setting failed! ';
end;
end;
// Verify Java installation
procedure TForm2.btnVerifyClick(Sender: TObject);
begin
//winexec(PAnsiChar(AnsiString('cmd.exe /c java -version')), sw_hide);
WinExec('cmd.exe /k java -version', SW_SHOWNORMAL);
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
edtJdkPath.Text := 'X:\jdk-11';
end;
end.
https://pastebin.com/ECbjdvNz