Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-11-2007
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
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

Última edición por kurono fecha: 03-11-2007 a las 02:34:34.
Responder Con Cita
  #2  
Antiguo 03-11-2007
fide fide is offline
Miembro
 
Registrado: oct 2006
Posts: 331
Poder: 18
fide Va por buen camino
Lightbulb 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...
Responder Con Cita
  #3  
Antiguo 03-11-2007
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 03-11-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 04-11-2007
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
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.

Última edición por kurono fecha: 04-11-2007 a las 02:20:48.
Responder Con Cita
  #6  
Antiguo 04-11-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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;
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 04-11-2007 a las 03:01:52.
Responder Con Cita
  #7  
Antiguo 04-11-2007
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
ok dejame probar
Responder Con Cita
  #8  
Antiguo 04-11-2007
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
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
Responder Con Cita
  #9  
Antiguo 04-11-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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);
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #10  
Antiguo 05-11-2007
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
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
Responder Con Cita
  #11  
Antiguo 05-11-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #12  
Antiguo 05-11-2007
AFilth AFilth is offline
Miembro
 
Registrado: ago 2005
Posts: 119
Poder: 19
AFilth Va por buen camino
Cita:
Empezado por kurono Ver Mensaje
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Cómo Modificar un Registro de Tabla más Eficiente? MartinC MySQL 1 16-03-2005 14:04:31
¿Cómo inserto, mediante un query, un registro en paradox con un campo autoincrement? molarte Tablas planas 2 18-11-2004 17:27:30
modificar registros mediante cgi-webbroker [[JONAS]] Internet 1 19-05-2004 18:40:24
Como modificar un registro? Telemaco Conexión con bases de datos 4 20-02-2004 16:45:48
Como modificar el Registro de Windows Mariana Varios 3 08-10-2003 18:20:14


La franja horaria es GMT +2. Ahora son las 18:46:30.


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
Copyright 1996-2007 Club Delphi