Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Registro del sistema malogrado (https://www.clubdelphi.com/foros/showthread.php?t=74763)

RebeccaGL 09-07-2011 18:03:43

Registro del sistema malogrado
 
Holas,

Resulta que me hize una rutina para proteger mi sistema, rutinas con el registro del sistema pero al ejecutarla me malogro el registro del sistema y tuve que instalar el windows de nuevo, como puedo hacer una rutina para que no me malogre el registro.

En la rutina que hize encontre que estaba borrando una clave asigndada a una variable pero esta no contenia ningun valor osea la variable.

Pongo esto como precaucion para que a nadie mas le pase lo que me paso ok.

Aqui el codigo.......
Código Delphi [-]
 
 
 
// Escribir en el Registro del Sistema
procedure TForm_INIT.CREATE_LicPmt;
var
  Registry : TRegistry;
begin
  // Read_PROGRAM_NAME
  OFFSET_Key := UpperCase(SYSTEM.Copy(OFFSET_Key, 1, Length(OFFSET_Key) - 4));
  Encripted(OFFSET_Key);
  SYSTEM.Insert('\', OFFSET_Key, 1);
  Registry := TRegistry.Create;
  try
    Registry.RootKey := HKEY_CLASSES_ROOT;
    FOUND_Key_00 := False;
    FOUND_Key_01 := False;
    FOUND_Key_02 := False;
    FOUND_Key_00 := Registry.OpenKey(OFFSET_Key, False);
    if not (FOUND_Key_00) then
      Registry.OpenKey(OFFSET_Key, True);
    FOUND_Key_01 := Registry.OpenKey(OFFSET_Key + OFFSET_Id1, False);
    if not (FOUND_Key_01) then
      Registry.WriteString('', '{22d3m61a-0000-0000-0001-je5ao6vl5gz5}');
    FOUND_Key_02 := Registry.OpenKey(OFFSET_Key + OFFSET_Id2, False);
    if not (FOUND_Key_02) then
      Registry.WriteString('', '{22d3m61a-0000-0000-0002-je5ao6vl5gz5}');
    Label_STATUSBAR_PWD.Caption := 'Licencia Permanente Creada...';
  finally
    Registry.Free;
  end;
end;

// Escribir en el registro del sistema
procedure TForm_INIT.CREATE_LicTmp;
var
  Registry : TRegistry;
begin
  // Read_PROGRAM_NAME
  OFFSET_Key := UpperCase(SYSTEM.Copy(OFFSET_Key, 1, Length(OFFSET_Key) - 4));
  Encripted(OFFSET_Key);
  SYSTEM.Insert('\', OFFSET_Key, 1);
  Registry := TRegistry.Create;
  try
    Registry.RootKey := HKEY_CLASSES_ROOT;
    FOUND_Key_00 := False;
    FOUND_Key_01 := False;
    FOUND_Key_00 := Registry.OpenKey(OFFSET_Key, False);
    if not (FOUND_Key_00) then
      Registry.OpenKey(OFFSET_Key, True);
    FOUND_Key_01 := Registry.OpenKey(OFFSET_Key + OFFSET_Id1, False);
    if not (FOUND_Key_01) then
      Registry.WriteString('', '{22d3m61a-0000-0000-0001-je5ao6vl5gz5}');
    Label_STATUSBAR_PWD.Caption := 'Licencia Temporal Creada...';
  finally
    Registry.Free;
  end;
end;

// Borrar claves del resgistro del sistema
procedure TForm_INIT.DELETE_LicPmtTmp;
var
  Registry : TRegistry;
begin
  // Read_PROGRAM_NAME
  OFFSET_Key := UpperCase(SYSTEM.Copy(OFFSET_Key, 1, Length(OFFSET_Key) - 4));
  Encripted(OFFSET_Key);
  SYSTEM.Insert('\', OFFSET_Key, 1);
  Registry := TRegistry.Create;
  try
    Registry.RootKey := HKEY_CLASSES_ROOT;
    FOUND_Key_00 := False;
    FOUND_Key_01 := False;
    FOUND_Key_02 := False;
    FOUND_Key_01 := Registry.OpenKey(OFFSET_Key + OFFSET_Id1, False);
    if (FOUND_Key_01) then
      Registry.DeleteKey(OFFSET_Key + OFFSET_Id1);
    FOUND_Key_02 := Registry.OpenKey(OFFSET_Key + OFFSET_Id2, False);
    if (FOUND_Key_02) then
      Registry.DeleteKey(OFFSET_Key + OFFSET_Id2);
    FOUND_Key_00 := Registry.OpenKey(OFFSET_Key, False);
    if (FOUND_Key_00) then
      Registry.DeleteKey(OFFSET_Key);
    Label_STATUSBAR_PWD.Caption := 'Licencia Eliminada...';
  finally
    Registry.Free;
  end;
end;

// La Llamada sera asi...
  DELETE_LicPmtTmp;    // Elimina Claves
  CREATe_LicPmt ó      // Crea Clave Indefinida
  CREATe_LicTmp        // Crea Clave para 3 meses

// Esta es la assignacion que me olvide de hacer...
  OFFSET_Key := ExtractFileName(Application.ExeName);

// Y luego poner
  OFFSET_Key := UpperCase(SYSTEM.Copy(OFFSET_Key, 1, Length(OFFSET_Key) - 4));
  Encripted(OFFSET_Key);
  SYSTEM.Insert('\', OFFSET_Key, 1);

// Osea la variable OFFSET_Key no tenia valor alguno y esa variable la usaba para
// encontrar una clave y borrarla lo que me pregunto es porque en la pregunta de
// si existe la clave me malogro el registro del sistema

    FOUND_Key_01 := Registry.OpenKey(OFFSET_Key + OFFSET_Id1, False);
    if (FOUND_Key_01) then
      Registry.DeleteKey(OFFSET_Key + OFFSET_Id1);

// if FOUND_Key_01 = Falso) no debio haber borrado nada y parece que me malogro
// el registro y tuve que instalar de nuevo el windows.
// Como puedo hacer para que no me vuelva a pasar esto.
// Espero que me den una mano la verdad me dio mucho trabajo teneer que instalar
// Todo de nuevo.


La franja horaria es GMT +2. Ahora son las 19:04:58.

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