unitformMain;interface
usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Registry, IniFiles;typeTfrmMain= class(TForm)
btnRegeditWrite: TButton;
Memo1: TMemo;
btnRegeditRead: TButton;
edtJavaHome: TEdit;procedurebtnRegeditWriteClick(Sender: TObject);procedureFormCreate(Sender: TObject);procedurebtnRegeditReadClick(Sender: TObject);public
function ReadString( _dwRootKey :DWORD; const _strPath, _strKey :string; var _strOut : string):Integer;function WriteString(_dwRootKey :DWORD; const _strPath, _strKey, _strValue :string):Integer;public
functionReadIni():integer;end;varfrmMain: TfrmMain;implementation
{$R *.dfm}
function TfrmMain.ReadString(_dwRootKey :DWORD; const _strPath, _strKey: string; var _strOut: string): Integer;varreg :TRegistry;beginResult := 0;
reg := TRegistry.Create;tryreg.RootKey := _dwRootKey;//HKEY_LOCAL_MACHINE; //‘SYSTEM\CurrentControlSet\Control\Session Manager\Environment‘
if not reg.OpenKey( _strPath, false ) then
beginResult := -1;
Exit;end;
_strOut :=reg.ReadString(_strKey);finallyreg.CloseKey;
reg.Destroy;end;end;function TfrmMain.WriteString(_dwRootKey: DWORD; const _strPath, _strKey, _strValue: string): Integer;varreg :TRegistry;beginreg := TRegistry.Create;tryreg.RootKey := _dwRootKey;//HKEY_LOCAL_MACHINE; //‘SYSTEM\CurrentControlSet\Control\Session Manager\Environment‘
if not reg.OpenKey( _strPath, false ) then
beginResult := -1;
Exit;end;
reg.WriteString( _strKey, _strValue );finallyreg.CloseKey;
reg.Destroy;end;end;procedureTfrmMain.FormCreate(Sender: TObject);beginReadIni;
btnRegeditReadClick(nil);end;procedureTfrmMain.btnRegeditWriteClick(Sender: TObject);var strValue :string;beginMemo1.Lines.Add(‘‘);//HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Session Manager\Environment\path//HKEY_CURRENT_USER \Environment//HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment (官方)
//strValue := ‘C:\Program Files\Java\jdk1.8.0_152;AAA‘;
//strValue := ‘C:\Program Files\Java\jdk1.8.0_152‘;
strValue :=trim(edtJavaHome.Text);if (strValue = ‘‘) then
beginMemo1.Lines.Add(‘新的 JAVA_HOME 的值为空 .‘);
Exit;end;if 0>WriteString(HKEY_LOCAL_MACHINE,‘SYSTEM\CurrentControlSet\Control\Session Manager\Environment‘, ‘JAVA_HOME‘, strValue) then
beginMemo1.Lines.Add(‘注册表写入失败 .‘);
Exit;end;
Memo1.Lines.Add(‘注册表写入成功 .‘);end;procedureTfrmMain.btnRegeditReadClick(Sender: TObject);var strValue :string;beginMemo1.Lines.Add(‘‘);if (0 >ReadString(HKEY_LOCAL_MACHINE,‘SYSTEM\CurrentControlSet\Control\Session Manager\Environment‘, ‘JAVA_HOME‘, strValue)) then
beginMemo1.Lines.Add(‘读取 注册表 出错‘);
Exit;end;
Memo1.Lines.Add(‘HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\JAVA_HOME‘);
Memo1.Lines.Add(‘ ‘+strValue);end;functionTfrmMain.ReadIni(): integer;varini :Tinifile;
strX86, strX64 :string;
strFileName :string;beginstrFileName := ExtractFilePath(Paramstr(0)) + ‘_EnvironmentVariable.ini‘;
ini := Tinifile.Create(strFileName);trystrX86 := ini.ReadString(‘JAVA_HOME‘, ‘Win7x86‘, ‘‘);
strX64 := ini.ReadString(‘JAVA_HOME‘, ‘Win7x64‘, ‘‘);
Memo1.Lines.Add(‘JAVA_HOME(Win7x86) :‘+strX86);
Memo1.Lines.Add(‘JAVA_HOME(Win7x64) :‘+strX64);finallyini.Free;end;end;end.