СРОЧНО! Защита от ВОРА?

отредактировано 07:42 Раздел: FastReport 3.0
Как защитить отчет, что бы его нельзя было загрузить из другого приложения LoadFromFile и использовать. Файлы отчетов передаются с программой, что бы пользователь мог работать с дизайнером.

Может быть, как-то наложить на отчет пароль, но чтобы в моей программе он подставлялся автоматически?

Комментарии

  • gpigpi
    отредактировано 07:42
    В дизайнере меню Отчёт-Настройки Пароль
    У объекта отчёт в самой программе выставить frxReport.ReportOptions.Password
  • отредактировано 07:42
    IF OpF.Execute then frxReport1.LoadFromFile(OpF.FileName);
    frxReport1.ReportOptions.Password:='123456';
    frxReport1.DesignReport;

    При открытии отчета в дизайнере, появляется окно ввода пароля, но пользователь не знает пароль, программа должна его сама подставить?
  • gpigpi
    отредактировано February 2006
    Да, действительно, так не получается ;)
    Дело в том, что информация о пароле удаляется при загрузке отчёта, да и хранится она в frxReport1.ReportOptions.PrevPassword
    Пришлось закомментировать одну строку в frxClass.pas
    procedure TfrxReportOptions.Clear;
    begin
      if not FInfo then
      begin
        FAuthor := '';
        FCompressed := False;
        FCreateDate := Now;
        FDescription.Clear;
        FLastChange := Now;
        FPicture.Assign(nil);
        FVersionBuild := '';
        FVersionMajor := '';
        FVersionMinor := '';
        FVersionRelease := '';
      end;
      FConnectionName := '';
      FInitString := '';
      FName := '';
      FPassword := '';
     { FPrevPassword := ''; }
    end;
    
    Тогда такой код работает
    frxReport1.ReportOptions.PrevPassword:='123456';
    IF OpF.Execute then frxReport1.LoadFromFile(OpF.FileName)
    Правда, криптостойкость пароля оставляет желать лучшего ;)
  • отредактировано 07:42
    gpi написал: »
    Да, действительно, так не получается :)
    Дело в том, что информация о пароле удаляется при загрузке отчёта, да и хранится она в frxReport1.ReportOptions.PrevPassword
    Пришлось закомментировать одну строку в frxClass.pas
    procedure TfrxReportOptions.Clear;
    begin
      if not FInfo then
      begin
        FAuthor := '';
        FCompressed := False;
        FCreateDate := Now;
        FDescription.Clear;
        FLastChange := Now;
        FPicture.Assign(nil);
        FVersionBuild := '';
        FVersionMajor := '';
        FVersionMinor := '';
        FVersionRelease := '';
      end;
      FConnectionName := '';
      FInitString := '';
      FName := '';
      FPassword := '';
     { FPrevPassword := ''; }
    end;
    
    Тогда такой код работает
    frxReport1.ReportOptions.PrevPassword:='123456';
    IF OpF.Execute then frxReport1.LoadFromFile(OpF.FileName)
    Правда, криптостойкость пароля оставляет желать лучшего :)

    Не работает!!!!
    У кого есть еще советы...
    Тема актуальна - отзовитесь!!!!
  • LOGic_BBSLOGic_BBS Казань
    отредактировано 07:42
    Файлы отчеты запихнуть в ресурсы т.е. в ехе
  • gpigpi
    отредактировано 07:42
    написал:
    Не работает!!!!
    У кого есть еще советы...
    Тема актуальна - отзовитесь!!!!
    Не работает в FR3 или в FR4? В тройке данный способ работал, а вот в четвёрке в frxCrypt.pas внесите изменения
    function TfrxCrypt.AskKey(const Key: String): String;
    begin
      Result := Key;
      if Result = '' then
      Result:='1234'; // set your password
       { with TfrxPasswordForm.Create(Application) do
        begin
          if ShowModal = mrOk then
            Result := PasswordE.Text;
          Free;
        end;}
    end;
    
  • LOGic_BBSLOGic_BBS Казань
    отредактировано 07:42
  • отредактировано 07:42
    gpi написал: »
    Не работает в FR3 или в FR4? В тройке данный способ работал, а вот в четвёрке в frxCrypt.pas внесите изменения
    function TfrxCrypt.AskKey(const Key: String): String;
    begin
      Result := Key;
      if Result = '' then
      Result:='1234'; // set your password
       { with TfrxPasswordForm.Create(Application) do
        begin
          if ShowModal = mrOk then
            Result := PasswordE.Text;
          Free;
        end;}
    end;
    

    Работает!!! но не так как хотелось бы...
    А нельзя ли чтоб вот так было:
    в программе указал пароль - открыл отчет с этим паролем, если не указал то вылезла форма для ввода пароля.????
    Это былоб идеально!
  • gpigpi
    отредактировано October 2007
    написал:
    А нельзя ли чтоб вот так было:
    в программе указал пароль - открыл отчет с этим паролем, если не указал то вылезла форма для ввода пароля.???
    Создайте тикет и напишите об этом в техподдержку

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.