Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como modificar el registro de windows xp mediante delphi 7 (https://www.clubdelphi.com/foros/showthread.php?t=49910)

kurono 03-11-2007 02:31:51

Como modificar el registro de windows xp mediante delphi 7
 
hola amigos del foro como estan nuevamente les pido que me ayuden bien lo que quiero hacer es lo siguiente hacer una aplicacion que modifique el registro de windows ose el registro que yo le ponga y listo eso es lo que quiero hacer

fide 03-11-2007 02:57:55

Modificando el registro
 
Hola. desde delphi, trabajar con el registro es muy facil.

Solo tienes que incluir el uses Registry y ya tienes acceso a todas las funciones, procedimientos, constantes etc. que necesitas para trabajar con el registro de windows.

un ejemplo de ello esta aqui debajo...

Código Delphi [-]
 uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
 Registro: TRegistry;
begin

try
  Registro := TRegistro.Create;
  Registro.RootKey := HKEY_CURRENT_USER;
  if Registro.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run') then
    begin
      Registro.WriteString('MyApp', Application.ExeName); 
    end
  else
   ShowMessage('No se ha podido abrir la clave...');
finally
 Registro.Free;
end;

end;

Este codigo es ara que tu app se ejecute al inicio de la sesion en donde te encuentras. Si tienes mas dudas solo preguntas, que aqui no se cobra por hablar okas...

kurono 03-11-2007 03:32:54

ok es verdad se nota q es facil trabajar con el registro pero ese ejemplo q me diste es facil pero supongamos que el registro sea este


(HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate)

el cual tiene un valor de (1) si quiero cambiar ese valor solo tengo que poner
esta parte esto

Registro.WriteString('2');

y con esto bastaria o hay que hacer algo mas

dec 03-11-2007 04:56:09

Hola,

El código fuente que te muestra el compañero es lo que necesitas, básicamente. Se instancia en un objeto la clase "TRegistry", se abre la clave del registro que quiere leerse o escribirse, y se lee o se escribe lo que es menester; se cierra la clave, se libera el objeto, y aquí paz, y después gloria.

Lo que acaso tengas que tener en cuenta es el tipo de datos. No todo el registro de Windows guarda "cadenas". También almacena enteros, registros "binarios"... y algunos otros tipos de datos. Pero, "TRegistry" cuenta con métodos para leer y escribir todos estos tipos de datos. Tendrás que hacer pruebas y comprobar que todo va como esperas.

kurono 04-11-2007 02:16:47

hola amigo dec tengo un problema con el codigo para modificar el registro de windows el problema es el siguiente es q no me escribe el valor que le pongo cuyo valor por defecto en la direccion de registro que he elegido es 1 y lo quiero cambiar a 2 lo e intentado todo ponerlo como string,integer,float ect pero no me escribe si puede darme una ayuda te lo agradeceria y para que tengas una idea de lo q estoy haciendo te muestro mi codigo

Código Delphi [-]
var
 Registro: TRegistry;
begin
try
  Registro := TRegistry.Create;
  Registro.RootKey := HKEY_CURRENT_USER;
  if Registro.OpenKey('Software\Microsoft\Windows\CurrentVersion\App Management\ShowUpdates',true) then
    begin
    registro.WriteInteger('2');
    end
  else
   ShowMessage('No se ha podido abrir la clave...');
finally
 Registro.Free;
end;
end;
end.

dec 04-11-2007 02:53:03

Hola,

El problema está en el método "WriteInteger()", que requiere dos parámetros, el primero el nombre del valor a escribir, en este caso "ShowUpdates". :)

El asunto puede quedar más o menos así:

Código Delphi [-]
uses
  Registry;

function ChangeShowUpdatesRegistryValue(value: integer): boolean;
const
  REGISTRY_VALUE = 'ShowUpdates';
  REGISTRY_KEY = 'Software\Microsoft\Windows\CurrentVersion\App Management\';
begin
  with TRegistry.Create() do
  try
    // For readability purpose
    RootKey := HKEY_CURRENT_USER;
    if OpenKey(REGISTRY_KEY, true) then
    begin
      if (ReadInteger(REGISTRY_VALUE) <> value) then
        WriteInteger(REGISTRY_VALUE, value);
      result := true;
    end
    else
     result := false;
  finally
    Free();
  end;
end;

kurono 04-11-2007 03:10:04

ok dejame probar

kurono 04-11-2007 03:32:26

disculpa dec pero el codigo que me diste no me funciona me da error el mio me corre pero no me cambia el valor te pido que analise el mio a ver que se puede cambiar para que haga el cambio de valor

dec 04-11-2007 03:37:52

Hola,

Cuando se dice que algo "da error" hay que especificar el mensaje de error, porque no somos adivinos. :)

Yo he probado el código que he copiado y bueno, va bien, pero, en todo caso, te recuerdo el problema que tiene tu código:

Cita:

Empezado por yo mismo
El problema está en el método "WriteInteger()", que requiere dos parámetros, el primero el nombre del valor a escribir, en este caso "ShowUpdates".

Es decir, has de usar el método "WriteInteger()" tal que así:

Código Delphi [-]
WriteInteger('ShowUpdates', 2);

kurono 05-11-2007 01:38:20

ok gracia dec el codigo me funciona estaba confundido porq no veia los cambio efetuados instantaneamente luego me acorde que hay que reniciar la pc para que los cambio sean efectuados nuevamente te doy la gracia por ayudarme ahora hare una aplicacion que cambie algunos valores del registro para mejorar el desempeño de windows

dec 05-11-2007 01:47:01

Hola,

Cita:

Empezado por kurono
(...) ahora hare una aplicacion que cambie algunos valores del registro para mejorar el desempeño de windows

Coñe, ya nos harás saber de ella. Aunque algunos dirán que Windows no puede mejorarse, y punto. :D :)

AFilth 05-11-2007 15:24:24

Cita:

Empezado por kurono (Mensaje 243404)
ok gracia dec el codigo me funciona estaba confundido porq no veia los cambio efetuados instantaneamente luego me acorde que hay que reniciar la pc para que los cambio sean efectuados nuevamente te doy la gracia por ayudarme ahora hare una aplicacion que cambie algunos valores del registro para mejorar el desempeño de windows


Supongo que hablas del cambio de la variable del registros que has cambiado desde el programa de Delphi...

No hace falta reiniciar, con que des a F5 basta ;)


La franja horaria es GMT +2. Ahora son las 22:10:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi