adicionar path nas variaveis de ambiente do windows

846 views
Skip to first unread message

Pedro B. Alves

unread,
Jan 18, 2011, 8:00:57 AM1/18/11
to dug...@googlegroups.com
Bom dia pessoal.

Existe alguma forma de adicionar no path do windows um path via programação?

Jair Roberto Silva

unread,
Jan 19, 2011, 6:36:58 AM1/19/11
to dug...@googlegroups.com
Olá, Pedro!

Você pode pesquisar na Internet sobre os métodos GetEnvironmentVariable e SetEnvironmentVariable do Windows, acessíveis via Delphi.

Esse foi o primeiro que encontrei no google:

Nesse artigo, escrito pelo Peter Johnson, são apresentadas duas rotinas para facilitar o trabalho, que reproduzo abaixo:


function GetEnvVarValue(const VarName: string): string;
var
  BufSize: Integer;  // buffer size required for value
begin
  // Get required buffer size (inc. terminal #0)
  BufSize := GetEnvironmentVariable(
    PChar(VarName), nil, 0);
  if BufSize > 0 then
  begin
    // Read env var value into result string
    SetLength(Result, BufSize - 1);
    GetEnvironmentVariable(PChar(VarName),
      PChar(Result), BufSize);
  end
  else
    // No such environment variable
    Result := '';
end;


function SetEnvVarValue(const VarName,
  VarValue: string): Integer;
begin
  // Simply call API function
  if SetEnvironmentVariable(PChar(VarName),
    PChar(VarValue)) then
    Result := 0
  else
    Result := GetLastError;
end;

Basicamente você deve ler a variável de ambiente "PATH" usando o método GetEnvVarValue, verificar se o valor retornado já contém o caminho que você deseja adicionar e, caso não contenha, alterar o conteúdo da variável "PATH" adicionando o caminho desejado e atualizar seu novo valor usando o método SetEnvVarValue. Veja um exemplo simplificado:

var
  s: string;
  i: Integer;
begin
  s := GetEnvVarValue('PATH');
  if not AnsiContainsText(s, 'C:\MeuCaminho') then
  begin
    s := s + ';C:\MeuCaminho';
    i := SetEnvVarValue('PATH', s);
    if i > 0 then
      raise Exception.CreateFmt('Ocorreu o erro %d ao tentar atualizar a variável de ambiente "PATH"!', [i]);
  end;
end;

O ideal seria quebrar o resultado do GetEnvVarValue em strings, usando como referência o ";" (ponto e vírgula) que serve para separar cada caminho do 'PATH'.

Um abraço,
Jair


Em 18 de janeiro de 2011 11:00, Pedro B. Alves <pedroa...@gmail.com> escreveu:
Bom dia pessoal.

Existe alguma forma de adicionar no path do windows um path via programação?

--
Você recebeu esta mensagem porque está inscrito no "DUG-RS -
Delphi Users Group Rio Grande do Sul" em Grupos do Google.
Acesse o nosso BLOG em http://www.dug-rs.org e contribua com a comunidade Delphi do Rio Grande do Sul
Para postar neste grupo, envie um e-mail para dug...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail para
dug-rs-un...@googlegroups.com
Para ver mais opções, visite este grupo em
http://groups.google.com.br/group/dug-rs?hl=pt-BR
Twitter: @dugrs

Reply all
Reply to author
Forward
0 new messages