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 11-04-2004
verm83 verm83 is offline
Miembro
 
Registrado: nov 2003
Posts: 28
Poder: 0
verm83 Va por buen camino
Eliminar registro de Windows

Hola de nuevo.
Me interesaría borrar un registro de Windows, dentro de HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\, para que cierta aplicación arranque o no junto con Windows. Para ello he usado la siguiente función:

Código:
procedure TvPrograma.abrirEnInicio(iOpcion:integer);
var
    Registro:TRegistry;
begin
    // Crea una clave en el registro
    Registro:=TRegistry.create;
    Registro.RootKey:=HKEY_LOCAL_MACHINE;
    // Según iOpcion, borramos o añadimos la clave
    case iOPcion of
        0: if Registro.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run\',FALSE) then
               Registro.WriteString('MiPrograma','');
        1: if Registro.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',FALSE) then
               Registro.WriteString('MiPrograma',ExtractFilePath(ExpandFileName(ParamStr(0)))+'MiPrograma.exe');
    end;
    Registro.Destroy;
end;
Como se ve, cuando me interesa eliminarla (pasándole 0 a la función), lo que realmente hace es establecer la ruta a una cadena vacía. Esto es así porque DeleteKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run\MiPrograma') no me funcionó. ¿Alguien sabe por qué? ¿Cómo podría hacerlo? No me convence establecer la ruta a una cadena vacía.

Gracias anticipadas.
__________________
IncestoCanibal.com
Responder Con Cita
  #2  
Antiguo 11-04-2004
verm83 verm83 is offline
Miembro
 
Registrado: nov 2003
Posts: 28
Poder: 0
verm83 Va por buen camino
Me acabo de responder yo sólo
En vez de DeleteKey(), pues abres la ruta del registro con OpenKey(), y luego borras el valor que deseas, indicando su nombre, usando DeleteValue(), quedando así el código:


Código:
    case iOPcion of
        0: if Registro.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run\',FALSE) then
               Registro.DeleteValue('MiPrograma');
        1: if Registro.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',FALSE) then
               Registro.WriteString('MiPrograma',ExtractFilePath(ExpandFileName(ParamStr(0)))+'MiPrograma.exe');
    end;
Espero que a alguien le sirva de ayuda
__________________
IncestoCanibal.com
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


La franja horaria es GMT +2. Ahora son las 05:34:53.


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