cs_new2000
Messages postés23Date d'inscriptionmardi 1 août 2006StatutMembreDernière intervention 5 juin 2008
-
27 mai 2008 à 16:48
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
27 mai 2008 à 19:05
Salut!
J'ai un problème de securité que j'arrive à resoudre. Mais pas du tout bien comme je le pense...
S'il vous plait, j'aimerai partager avec vous mes idées.
Je m'explique:
J'ai un programme déjà fait. C'est juste la facturation travaillant avec du Stock en même temps.
1) Pour une première securité, voilà ce que j'avais pensé faire dans l'évenement BeforeInsert
de mon composant AdoTable1:
If Adotable1.RecordCount > 15 then begin
ShowMessage('version demonstrative...contactez le Programmeur!');
Abort;
Exit;
Ben, ces codes serviront surement quand le programme est distribué pour une question demonstrative.
2) Et pour ma deuxième securité (c'est ici où je n'arrive pas à gerer ça):
si le programme sera installé definivement quelque part. Comment le proteger contre des copies
illégales?
Voilà ce que je tente de faire et ça ne marche pas comme il faut:
J'ai avec moi une Base de données toute simple dans mon PenDrive (elle peut être vide...peu importe).
Et alors, le programme devra demarrer normalement à condition que mon PenDrive soit connecté à un
des ports USB. Mais alors, qu'est ce qui s'passe si le dit PenDrive ne pas connecté à mon ordinateur?
au lancement de l'application, ce message apparait:
"Project Project1.exe raised exception class EOleException with message 'F:\MaBase.mdb' ce n'est pas
chemin valide..."
C'est un très bon message logiquement correcte.
Mais il est très inconfortable cette demarche, parce que l'"illegal" vera le chemin et pourra s'inspirer de créer vraisemblablement une Base de données pareillle. Et peu tenter sa chance pour le faire bien marcher.
Ma préocupation est faire de manière que ce message n'apparaisse pas comme tel. Mais qu'il y est juste un message disant par exemple: "vous n'avez pas de permission".
Au final, même si le programme se fait copier...mais il ne peut marcher!
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 27 mai 2008 à 18:20
Salut,
c'est peine perdue ... toute protection est contournable
le mieux étant de faire une application de démo (avec limitation ... portion de code non implémenté donc pas de risque de le craquer) et d'en faire une pour ceux qui l'auront acheté
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 27 mai 2008 à 19:05
Cirec a raison
une fois le programme fini, insere des directives de compilation comme suis :
unit Unit1;
{.$DEFINE VCOMPLETE} { directive désactivée }
{$IFDEF VCOMPLETE}
{$MESSAGE warn 'Vous compilez ce programme en version complete!'}
{$ELSE}
{$MESSAGE warn 'Vous compilez ce programme en version Demo!'}
{$ENDIF}
procedure TForm1.FormCreate(Sender: TObject);
begin
{$IFDEF VCOMPLETE}{ code version complete }
caption := 'Programme v1.0';
{$ELSE}{ code version demo }
caption := 'Programme v1.0 (DEMO)';
WarnDemo('Ce programme est une version Demo,'+CRLF+
'certaines actions ne seront donc pas disponible.');
{$ENDIF}
end;
procedure TForm1.Sauvegarder1Click(Sender: TObject);
begin
{$IFDEF VCOMPLETE}{ code version complete }
if SaveDialog1.Execute then
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
{$ELSE}{ code version demo }
WarnDemo('Sauvegarde indisponible en version Demo.');
{$ENDIF}
end;
{$IFNDEF VCOMPLETE}{ code version demo }
procedure TForm1.WarnDemo(const Msg: String);
begin
MessageDlg(Msg, mtInformation, [mbOk], 0);
end;
{$ENDIF}
end.
Compilation en mode VCOMPLETE = version complete, le code demo est ignoré et non inclus.
Compilation sans mode VCOMPLETE = version demo, le code complete est ignoré et non inclus.