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.