Question

J'ai créé mon produit et également généré la clé de licence pour cela, mais je veux demander la clé au bout de 30 jours. Je le faire avec la valeur de registre stockant la date avec l'ajout de 30 jours que. Mais je trouve que si l'utilisateur modifie la date système avec 30 jours avant ma logique fonctionne pas.

est-il une solution pour le logiciel de version d'essai sans vérifier la date du système et permettre à seulement 30 jours de procès?

Était-ce utile?

La solution

Vous pourriez avoir une autre clé de Registre que vous incrémenter après l'utilisation de tous les jours. De cette façon, même si elles changent la date de votre ordinateur, cette clé indique à votre programme qu'il a été en cours d'exécution pour> 30 jours.

En outre, cette valeur pourrait être chiffrée de sorte que si l'utilisateur tente de modifier manuellement, le programme peut refuser de fonctionner, car il n'a pas pu décrypter la valeur et obtenir un numéro valide en sortir.

Pour contourner réinstalle, vous pouvez ajouter des informations à un fichier enregistré avec la version d'essai de votre application qui est unique à cette version spécifique de l'application (peut-être un horodatage à partir de laquelle il a été installé). Quand une version d'essai de votre application tente d'ouvrir un fichier, il vérifiera cette signature et faire en sorte qu'il a été créé avec cette même instance, sinon refuser d'ouvrir le fichier. Ce Neutres essentiellement la possibilité de réinstaller simplement l'application et continuer à l'utiliser.

A la fin de la journée cependant, l'utilisateur dispose d'un contrôle total sur leur machine et peut probablement trouver un moyen de contourner tout ce que vous voulez faire (à court d'accéder à un service Web où ces détails sont conservés avant de laisser l'utilisateur utiliser l'application). Vous ne devriez probablement pas dépenser tant d'énergie à essayer d'arrêter les gars qui sont prêts à passer par ce trouble supplémentaire, mais dépenser plus de temps / argent / énergie en améliorant l'application pour ceux qui sont prêts à payer.

Autres conseils

J'ai une solution simple pour vous.

Prendre 2 variables pour Registre: 1. Date 2. contre

étapes:

  1. Définir un compteur = 1

  2. Copie date du système à ce jour

  3. Vérifiez chaque fois si la date est différente de la date actuelle, de copier cette date à la date d'enregistrement, incrémenter aussi le compteur de 1. Si la date est la même, ne rien faire.

  4. Maintenant, vous pouvez vérifier que vous contrez des jours d'essai expiration

En utilisant ces astuce, si l'utilisateur modifie la date du système à ce jour précédent que cela fonctionne aussi.

Pour registre vous pouvez chiffrer la date et compteur de telle sorte que personne technique ne reconnaîtrait pas votre logique!

... hourras

AJOUTÉE

Cette logique échoue uniquement lorsque l'utilisateur ne change pas la date de chaque jour! Encore une fois, nous avons la solution pour cela!

Je ne sais pas s'il est possible ou non, mais vous pouvez toujours avoir une solution:

  1. compter le temps total pour la période d'essai et le stocker dans le registre.
  2. Maintenant compter le temps total pour chaque course et l'ajouter dans une autre variable. (J'espère que cela peut être fait par minuterie)
  3. Comparer deux valeurs ci-dessus pour prendre la décision d'expiration.

Vous pouvez utiliser un composant de licence. Vous pouvez faire un vous-même (voir le LicenseManager classe ), ou en acheter un d'un fournisseur (par exemple CryptoLicensing ).

Vous devez avoir un moyen de détecter si l'utilisateur change la date à partir de laquelle vous avez commencé le procès. Dans les solutions que j'ai utilisé avant, nous avons sauvé la « dernière exécution » date et la « première exécution » date et si l'horloge change à quelque chose de plus de deux jours de « dernière exécution » nous expireront le procès. Il faut aussi un « jours exécutés » comptoir afin qu'ils ne peuvent pas continuer à avancer la date de deux jours en arrière (oublié de mentionner cette partie) - le compteur s'incrémenté à chaque exécution

.

Bien sûr, les systèmes de licences de logiciels comme celui-ci sont toujours évitables en désinstallant et en réinstallant avec rafraîchissante appropriée du registre - l'astuce est Dissimuler et dupliquer vos informations de licence suffisant pour rendre cette tâche difficile, mais finalement, il se trouve (surtout si vous utilisez une base de code .NET unobfuscated).

Difficile de traiter 30 jours sans référence à la date du système / horloge. Vous pouvez toujours garder une liste des dates auxquelles l'application a été lancée et compter 1 pour chaque fois qu'il était différent de la dernière fois. De cette façon, votre utilisateur doit définir la même date chaque fois qu'ils ont tiré votre application.

En dehors de cela, vous pouvez, à condition qu'il y avait un accès Internet, interroger un serveur de temps bien connu pour la date actuelle. Cela pourrait être contournée en débranchant mais vous pouvez toujours demander une connexion Internet avant votre application démarre.

Enfin, une source de temps externe, local via une clé matérielle ou similaire, mais je pense que vous obtenez dans l'extrême où vous seriez mieux gérer directement les procès en personne.

Si vous ne pouvez garantir une connexion Internet, vous pouvez mettre en place un système en ligne (vérifier un serveur de temps ou de votre propre serveur d'authentification). Bien sûr, cela introduit une autre dépendance - si l'Internet va, vos utilisateurs ne peuvent pas travailler

.

En fin de compte, je dirais acheter une solution de licence tiers - il est toujours pas incassable mais il sera probablement plus robuste que quelque chose que vous pouvez faire vous-même sans beaucoup de temps et d'efforts.

Entreposez la dernière date d'exécution, et chaque fois que la date système est avant, fin du procès.

La seule méthode fail-safe est de valider l'application contre un service qui vous hôte, en supposant ne fissurée votre code de connexion;)

Tant qu'ils peuvent effacer la valeur de Registre / fichier de stockage isolé / paramètres enregistrés: ils peuvent tout simplement redémarrer le procès. Il n'y a pas que vous pouvez faire à ce sujet. Voilà pourquoi les gens optent pour des fonctionnalités réduites dans le logiciel d'essai, en plus d'une période d'essai en fonction du temps.

Si son acceptable pour permettre dire 8 heures d'utilisation d'essai (au lieu d'un essai de 30 jours), puis un moyen de supprimer la dépendance du DateTime système est à l'aide d'une minuterie dans votre application qui est tiré dire chaque minute. Comptez le nombre de ces et donc à chaque fois que l'application soit lancé, il accumulera une utilisation totale minute. Vous pouvez ensuite stocker cette valeur de comptage quelque part, comme dans le Registre.

Il est simple date de fin d'évaluation du magasin et vérifier tous les jours. Pour éviter une utilisation prolongée par la manipulation de la date, maintenir un nombre d'heures dans l'application; garder incrémenter et écrire au Registre. compte des contrôles doit être fait à la fois contre la date de fin de l'évaluation et l'heure ne doit pas dépasser 24 (peut être 30 avec une teolrence).

Pensez également à:

Sauvegarde du DateTime de la fermeture de l'application, la prochaine fois, il est déjeuna votre demande sera en mesure de détecter si le paramètre Datetime a été changé ou non (au moins ils ne peuvent pas changer avant de quelque chose avant l'heure de fermeture). Exemple:

Fermeture de l'application:

Le temps d'économie => 15:34 31/03/2014 (Saved)

Démarrage de l'application suivante:

Vérifier Datime.Now> 15:34 31/03/2014. (Donc ils ne peuvent aller que ... ci-dessous)

AJOUTEE:

Essayez d'une certaine manière à intégrer les paramètres datetime du système dans votre utilisation de l'application: factures Génération, billets, reçus ... tout

Vous pouvez utiliser projet libre Libprot. Le site est https://github.com/libprot/trunk .

L'idée est qu'il doit être simple et facile à utiliser. Vous pouvez passer $$$ sur la protection, mais il peut être piraté en une semaine. Si quelqu'un veut faire l'ingénierie inverse de votre code, alors personne ne peut l'arrêter. Mon conseil à utiliser des méthodes simples qui fonctionne.

Ecrire une chaîne comme:

Entreprise X | 10.02.2014 | 01/12/2015

où 02/10/2014 est la date actuelle et si le temps du système est à moins que quelqu'un horloge système a changé => il ne faut pas courir

12/01/2015 - jusqu'à quelle heure la clé est valide

et le nom de la société qui a acheté / téléchargé.

cette chaîne doit être brouillées avec l'algorithme asymétrique avec la clé privée / publique et codée en chaîne que vous pouvez envoyer par e-mail, par exemple.

vous pouvez également avoir un service web pour validation. lorsque la connexion Internet est activée, vous peut valider la clé, si elle est piraté et disponible pour le public à Internet, vous pouvez l'interdire. Ou si quelqu'un écrirait générateur de clés vous pouvez valider cette clé est réelle.

vous pouvez ajouter un script PHP / Java dans votre site pour envoyer automatiquement des codes d'essai.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top