Ola galera , é o seguinte, eu preciso fazer uma aplicação em java, o mais simples possivel
que com um botao, ou qualquer outro recurso adicione um registro no windowns, por exemplo no famoso local “Run”
Com uma dupla com o nome e valor pré definidos
Tem como galera me ajudarem ai?
Você não pode fazer isso com Java. O Java não tem acesso ao registro do Windows. Para fazer isso, você terá de usar uma linguagem com acesso nativo à API do Windows, como Delphi, C++ ou VBScript. Você pode escrever uma DLL em uma dessas linguagens e chamar no Java usando JNI.
Eis um exemplo de código em Delphi (você terá de alterar algumas coisas se quiser usar isso em uma DLL, mas nada que o tio google não possa ajudar). Ele mostra como criar e ler uma chave do registro.
[code]unit Exemplo;
interface
uses SysUtils, WinTypes, WinProcs, Messages, Dialogs, Forms,Controls, Classes, StdCtrls, Registry;
type
// conjunto de tipos de valores
TKeyType = (ktString, ktBoolean, ktInteger, ktCurrency, ktDate, ktTime);
// função exemplo
Function ReadAppKey(const Key: String; KeyType: TKeyType; DefValue: Variant): Variant;
Procedure WriteAppKey(const Key: String; const Value: Variant; KeyType: TKeyType);
implementation
//Key: Nome da chave
//KeyType: Tipo da chave
//DefValue: Valor defaul da chave(caso ela não exista)
Function ReadAppKey(const Key: String; KeyType: TKeyType; DefValue: Variant): Variant;
var r: TRegistry;
begin
// cria o objeto TRegistry
r := TRegistry.Create;
// escolher qual diretório de root para abrir a chave
r.RootKey := HKEY_LOCAL_MACHINE;
try
// abre a chave \HKEY_LOCAL_MACHINE\Software\MeuPrograma
// o segundo parâmetro True, indica que se a chave não existir, a operação de abertura poderá criá-la.
r.OpenKey(‘Software\MeuPrograma’, True);
Result := DefValue;
// testa se existe o valor que se deseja ler.
// note que, para verificar a existência de chaves, utilizados KeyExists([chave]) e para verificar a existência de conjunto de //chaves de uma chave, utilizamos ValueExists([valor])
if r.ValueExists(Key) then
begin
case KeyType of
// lê o valor da chave em formato String
ktString: Result := r.ReadString(Key);
// lê o valor da chave em formato Boolean
ktBoolean: Result := r.ReadBool(Key);
// lê o valor da chave em formato Integer
ktInteger: Result := r.ReadInteger(Key);
// lê o valor da chave em formato Currency (moeda)
ktCurrency: Result := r.ReadCurrency(Key);
// lê o valor da chave em formato TDateTime (data)
ktDate: Result := r.ReadDate(Key);
// lê o valor da chave em formato TDateTime (hora)
ktTime: Result := r.ReadTime(Key);
end;
end;
finally
// destroy o objeto criado
r.Free;
end;
end;
Procedure WriteAppKey(const Key: String; const Value: Variant; KeyType: TKeyType);
var r: TRegistry;
begin
// cria o objeto TRegistry
r := TRegistry.Create;
// conecta ao root diferente do padrão
r.RootKey := HKEY_LOCAL_MACHINE;
try
// abre a chave \HKEY_LOCAL_MACHINE\Software\MeuPrograma
r.OpenKey(‘Software\MeuPrograma’, True);
case KeyType of
// grava o valor da chave em formato String
ktString: r.WriteString(Key, Value);
// grava o valor da chave em formato Boolean
ktBoolean: r.WriteBool(Key, Value);
// grava o valor da chave em formato Integer
ktInteger: r.WriteInteger(Key, Value);
// grava o valor da chave em formato Currency (moeda)
ktCurrency: r.WriteCurrency(Key, Value);
// grava o valor da chave em formato TDateTime (Data)
ktDate: r.WriteDate(Key, Value);
// grava o valor da chave em formato TDateTime (Hora)
ktTime: r.WriteTime(Key, Value);
end;
finally
r.Free;
end;
end;
end.
[/code]