Colocar registro no banco de registro do windowns xp com um aplicativo java

1 resposta
Maicon_Henrrique

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?

1 Resposta

matheuslmota

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.

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 
			//  o valor da chave em formato String 
			ktString: Result := r.ReadString(Key); 
			//  o valor da chave em formato Boolean 
			ktBoolean: Result := r.ReadBool(Key); 
			//  o valor da chave em formato Integer 
			ktInteger: Result := r.ReadInteger(Key); 
			//  o valor da chave em formato Currency (moeda) 
			ktCurrency: Result := r.ReadCurrency(Key); 
			//  o valor da chave em formato TDateTime (data) 
			ktDate: Result := r.ReadDate(Key); 
			//  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.
Criado 18 de julho de 2011
Ultima resposta 18 de jul. de 2011
Respostas 1
Participantes 2