用Delphi修改系统环境变量
来源:互联网 发布:易烊千玺舞蹈知乎 编辑:程序博客网 时间:2024/06/06 18:49
第一个是复制Oracle客户端文件。
第二个是写注册表。
第三个是注册环境变量。
用Delphi怎么修改系统的环境变量呢,上网找了一下,写了下面的程序,怕以后忘记了,贴上来。
- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls,Registry,ShellAPI;
-
- type
- TForm1 = class(TForm)
- btnAddOraCli: TButton;
- procedure btnAddOraCliClick(Sender: TObject);
- private
-
- public
-
- procedure SetEnvPath;
- function CopyOraFiles(const SourDir,DestDir :string) :Boolean;
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.dfm}
-
- procedure TForm1.btnAddOraCliClick(Sender: TObject);
- var
- sbtnCaption : string;
- begin
- sbtnCaption := btnAddOraCli.Caption;
- btnAddOraCli.Enabled := False;
- btnAddOraCli.Caption := '正在复制文件';
- if not CopyOraFiles('Ora_Cli', 'C:/') then
- begin
- ShowMessage('复制文件出错,Oracle客户端没有设置成功');
- Exit;
- end;
- WinExec('merge.bat',sw_hide);
- btnAddOraCli.Caption :='正在设置环境变量';
- SetEnvPath;
- btnAddOraCli.Enabled := True;
- btnAddOraCli.Caption := sbtnCaption;
- end;
-
- function TForm1.CopyOraFiles(const SourDir, DestDir: string): Boolean;
- var
- fOPStruct :TSHFileOpStruct;
- begin
-
- FillChar(fOPStruct,SizeOf(fOPStruct),0);
- with fOPStruct do
- begin
- Wnd := 0;
- wFunc := FO_COPY;
- pFrom := PChar(SourDir + #0);
- pTo := PChar(DestDir +#0);
- fFlags := FOF_NOCONFIRMATION + FOF_NOCONFIRMMKDIR ;
- end;
- if (SHFileOperation(fOPStruct) = 0) and (fOPStruct.fAnyOperationsAborted = False) then
- Result := True
- else
- Result := False;
- end;
-
-
- procedure TForm1.SetEnvPath;
- var
- reg : TRegistry;
- sLMKey : string;
- sCurStr : string;
- sStrToAdd: string;
- sName: string;
- begin
- sLMKey := 'System/CurrentControlSet/Control/Session Manager/Environment';
- sName := 'Path';
- sStrToAdd := 'C:/Ora_Cli/bin';
- reg := TRegistry.Create;
- try
- reg.RootKey := HKEY_LOCAL_MACHINE;
- if reg.OpenKey(sLMKey,False) then
- begin
- sCurStr := reg.ReadString(sName);
- if Pos(sStrToAdd,sCurStr) = 0 then
- begin
- sCurStr := sCurStr + ';' + sStrToAdd;
-
-
-
-
-
-
-
-
- reg.WriteExpandString(sName,sCurStr);
- reg.CloseKey;
- SetEnvironmentVariable(PChar(sName),PChar(sCurStr));
- SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,Integer(PChar('Environment')));
- ShowMessage('Oracle客户端安装成功');
- end
- else
- ShowMessage('此环境变量已经存在');
- end;
- except
- on E: Exception do
- begin
- reg.Free;
- ShowMessage('Error: ' + E.Message);
- Exit;
- end;
- end;
- reg.Free;
- end;
-
- end.
merge.bat批处理文件的内容如下:
regedit /s Instal_Ora_Cli.reg
注册表文件内容如下:
- Windows Registry Editor Version 5.00
-
- [HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE]
- "ORACLE_HOME"="C://Ora_Cli"
- "ORACLE_HOME_NAME"="OraHome92"
- "ORACLE_GROUP_NAME"="Oracle - OraHome92"
- "NLS_LANG"="AMERICAN_AMERICA.US7ASCII"
- "VOBHOME2.0"="C://Ora_Cli"
-
- [HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/ALL_HOMES]
- "HOME_COUNTER"="1"
- "DEFAULT_HOME"="OraHome92"
- "LAST_HOME"="0"
-
- [HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/ALL_HOMES/ID0]
- "NAME"="OraHome92"
- "PATH"="C://Ora_Cli"
- "NLS_LANG"="NA"
-
- [HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0]
- "ID"="0"
- "ORACLE_GROUP_NAME"="Oracle - OraHome92"
- "ORACLE_HOME_NAME"="OraHome92"
- "ORACLE_HOME"="C://Ora_Cli"
- "NLS_LANG"="AMERICAN_AMERICA.US7ASCII"
- "ORAMTS_CP_TRACE_LEVEL"="0"
- "ORAMTS_CONN_POOL_TIMEOUT"="120"
- "ORAMTS_SESS_TXNTIMETOLIVE"="120"
- "ORAMTS_NET_CACHE_MAXFREE"="5"
- "ORAMTS_NET_CACHE_TIMEOUT"="120000"
- "ORAMTS_OSCREDS_MATCH_LEVEL"="OS_AUTH_LOGIN"
- "ORACLE_HOME_KEY"="Software//ORACLE//HOME0"