C # 2008 SP1 P>
J'écris une application que je souhaite donner à un nombre sélectionné de clients. p>
Quelle est la meilleure solution à utiliser pour qu'après la période de trail (1 mois), l'application ne fonctionnera plus. P>
Je pensais que s'ils sont intéressés à acheter le logiciel, je leur donnerai une clé de licence ou quelque chose pour déverrouiller l'application. P>
J'ai un budget très limité que je travaille seul. Il y a donc des produits 3ème parti gratuits qui le fait? P>
5 Réponses :
La solution la plus simple (et par conséquent, le plus simple à contourner) consiste à stocker la date à laquelle le programme est d'abord installé (ou exécuté) dans un fichier, puis vérifiez que la date actuelle est lancée à chaque fois que le programme est lancé. Si la différence est> 30 jours, quittez le programme. P>
En stockant la date dans des endroits ou des endroits plus obscurs qui sont plus difficiles pour que l'utilisateur soit altéré (tel que le registre), il devient progressivement plus difficile pour eux de contourner le système et d'obtenir plus de temps pour l'utiliser, mais ne t-on arrêter de rembobiner l'horloge sur leur PC. P>
Si vous stockez la date de votre serveur et que vous obtenez également la date à partir de votre serveur, cela est plus sécurisé, mais signifie que l'utilisateur doit avoir une connexion Internet ouverte pour utiliser votre logiciel. P>
Vos options: P>
à l'installation écrivez quelque chose au registre, de sorte qu'il est difficile de trouver et de supprimer plus tard. De cette façon, votre application saura quand elle a été installée à l'origine et si elle devrait toujours fonctionner maintenant ou s'arrêter. Cette méthode échouera si le registre est bien nettoyé ou si le système d'exploitation est réinstallé. P> LI>
Utilisez une sorte de service de validation en ligne. Sera exempt des inconvénients de la [1]. Vous permettra également de surveiller l'activité d'application transcendant l'installation du système d'exploitation. Pour que cela fonctionne, vous aurez besoin d'une manière unique d'identifier un ordinateur utilisateur et de transmettre sa signature à votre serveur. P> LI> ol>
Les gars, vous avez dit "écrivez quelque chose au registre, de sorte qu'il est difficile de trouver". Comment pouvez-vous vous cacher quelque chose de l'utilisateur s'il existe un si bon outil que procminer de Sysinternals ( Techet.Microsoft.com/en-us/sysinternernals/bb896645.aspx ). Il montre exactement chaque chaîne que vous écrivez dans le registre. La même situation avec la création d'un fichier dans Hidend Place. Il n'y a pas de hiden places sur l'ordinateur.
Si vous allez avec une date approchée de la date, elle peut être contournée par le réglage d'un utilisateur de leur date (bien que je doute que les gens le fassent très souvent). Une alternative consiste à permettre à la demande de démarrer un certain nombre de fois avant d'expirer; Cette approche ignore évidemment les changements de date. P>
Ma méthode préférée est de Désactiver des parties de l'application forte> essentielles à une utilisation normale du programme, mais ne sont pas essentielles à son évaluation (comme la possibilité de sauvegarder votre travail, par exemple). Je fais cela avec mon propre logiciel, puis envoyez-leur un code de déverrouillage unique à leur ordinateur lorsqu'il achète le programme complet. Un avantage principal de cette approche est que La démo installée fonctionne comme un outil de vente potentiel pour toujours fort>. Je préférerais que mon programme travaille toujours dans une certaine mesure; Je ne pense pas un "Désolé, ce programme a expiré" Le message génère de nombreuses ventes. P>
Si vous avez pris cette approche, la fonctionnalité «manquante» serait toujours présente dans le programme; vous pourrait I> par anticipation, donc une sauvegarde / charge prend 5 minutes, par exemple. Ensuite, ils auraient une vraie fonctionnalité complète, mais le programme serait très difficile à utiliser pleinement, jusqu'à ce qu'ils se inscrivent.
@Mark: J'ai toujours voulu que la fonctionnalité manquante soit toujours là dans la version de démonstration, de sorte qu'elles doivent seulement entrer le code de déverrouillage pour tout activer. J'aime votre idée de quitter la fonctionnalité, mais de la déchirure de manière agaçante. Une autre idée que j'avais était de permettre au travail d'être sauvé, mais marquez le fichier d'une manière qui l'empêche d'être rouverte jusqu'à ce qu'ils achètent la version complète.
Il est en fait possible de faire une approche du temps difficile à contourner en notant le temps où l'application est démarrée et fermée (et l'inverse) et en comparant ces temps pour voir si l'horloge a été réalisée.
"Juste après un mois d'utilisation, une sauvegarde / charge prend déjà 5 minutes? Et ils veulent de l'argent pour que B>?" ;-)
@Maxvt: J'étais juste en train d'être poli pour marquer. Je ne pense pas vraiment prendre 5 minutes pour sauver est une bonne idée. :)
@Cannibal: True, mais vous faites déjà plus de travail pour vous-même en tant que programmeur, et comme je l'ai dit dans ma réponse, ma démonstration est un outil de vente - cela ne m'aidait pas si mon outil de vente a une date d'expiration.
Bonjour, je pense que la fonctionnalité limitée est ok pour cela. Cependant, j'aime bien l'idée d'avoir une clé unique pour le déverrouillage sur leur ordinateur. Je me demande comment créez-vous une clé unique pour chaque ordinateur? Si je donne une clé à quelqu'un, je ne veux pas que quelqu'un déverrouille toutes les applications en passant la clé autour de la clé. Merci,
@Robuk: Je le fais très simplement (ne dites pas le crackerz, s'il vous plaît). Lorsque l'application commence pour la première fois, je génère un identifiant de produit aléatoire unique et la masque dans le registre. Cet ID de produit est ensuite affiché dans la case About et les clients m'envoient lorsqu'ils achètent l'application. Je génère ensuite un code de déverrouillage qui ne fonctionne que pour cet ID de produit particulier. Le client entre dans ce code, ma demande le compare à l'ID de produit dans le registre, puis déverrouille le programme. De cette façon, le déverrouillage survit tout sauf un système d'exploitation complet réinstalgée.
Mon ID de produit est généré avec un algorithme personnalisé qui utilise des combinaisons de 16 lettres et des chiffres et laisse des caractères potentiellement déroutants (comme 0 et o ou 1 et i) afin que les clients ne produisent pas de fautes de frappe. L'algorithme de génération de codes de déverrouillage d'une correspondance est propriétaire, mais il ne s'agit fondamentalement que rien de plus que de mélanger des personnages d'une manière étrange - tout pirate informatique pourrait passer par l'EXE et comprendre ce qu'il fait, mais il est irrégrafichable pour les personnes normales (aka les gens qui pourraient effectivement acheter le logiciel quand même).
Écrivez une clé de registre pendant votre installation. La clé contiendra la date de l'installation. La date de la clé de registre doit être cryptée. p>
Lorsque votre demande est démarrée, recherchez l'existence de cette clé de registre. S'il n'existe pas, fermez l'application d'autre déchiffre la date, vérifiez la période d'essai et fermez la demande si l'essai est terminé. P>
Voici le truc que j'ai fait pour empêcher les utilisateurs de jouer avec les paramètres de date / heure et de remonter le sort de l'horloge. p>
Lorsque l'application s'exécute pour la première fois, chiffrer la première date d'exécution et la date d'essai de fin et la date de dernière exécution dans le registre. Et déchiffrer et vérifier la date d'essai de fin et non la date du système à chaque fois que l'application s'exécute. Cette solution fonctionne pour les utilisateurs sans connectivité Internet. P>
Je pourrais être Daft, mais je ne vois pas comment cela peut fonctionner. Vous avez besoin de la date / heure de quelque part, CMOS, OS-Clock, Internet-Time-Server pour voir si un essai a expiré.
Et si l'utilisateur nettoie-t-il le registre? Je pense que le meilleur moyen est d'activer l'application en ligne à l'aide de clés.
Connexes: Stackoverflow.com/q/20676008/1207195