 <p>In (1) you will have to fail in DllMain() on expiration. That is not that good if your DLL was present in the import table of the program that uses your DLL.</p> <p>In (2) you have more choice and it is more friendly IMHO.</p> <p>Just set an internal flag on expiration and then display a nag dialog.</p> <p>If the user continues to call your exported functions, you check the flag and fail all the function calls to your DLL.</p> <p>Ideally, if you have an init function in your DLL, then show the expiration nag dialog when init() is called and return a special code so that the implementor knows and exists his program as well.</p> <p>HTH, Elias</p>