Bonjour iBen68,
Si j'ai bien compris le problème, je pense avoir une solution très simple à mettre en place.
D'après vos explications, vous souhaitez protéger le chargement de DLL annexes pour éviter que les utilisateurs puissent les partager. Ce fonctionnement est très proche des DRM utilisés pour la musique (exemple : les MP3).
La solution la plus simple, selon moi, peut se faire en suivant les étapes suivantes :
- pour chaque DLL, vous définissez un numéro de série unique (par exemple un GUID),
- dans chaque DLL, vous créez une classe "Version" qui comporte une méthode "GetSerialNumber" et qui retourne ce numéro de version.
- lors du chargement de la DLL dans votre application, vous créez une instance de cette classe (par reflexion) et vous appeler cette méthode pour récupérer le numéro de série,
- une fois le numéro de série connu, vous faites un appel à votre site web pour vérifier la licence de cette DLL. Il s'agit de vérifier si l'utilisateur a bien le droit d'accéder à cette DLL (numéro de version).
- ce type de service peut être réalisé avec WebAPI ou WCF par exemple. Il suffit de créer une méthode de ce type :
bool CheckLicence(string userName, Guid dllNumber)
Avec ce système, à chaque démarrage de l'application, les différents composants seront vérifiés. Grâce à ce mécanisme vous pourrez aussi mettre en place des composants utilisables pour une durée définie (par exemple 1 mois, un an...). Autre idée : vous pouvez aussi mettre en place des abonnements...
En espérant avoir répondu à votre question,
Pascal
Partager