using System; using Microsoft.Win32; using System.Windows.Forms; namespace AkCommon.Common.Security { /// <summary> /// REGISTER PRODUCTS BY REGISTRY TABLE /// </summary> /// <remarks> /// <para>Date:2009/07/23</para> /// <para>Author:thinkingall</para> /// </remarks> public class ProductsRegistry { #region key value message define /// <summary> /// ROOT KEY'S PLACE [HKEY_CURRENT_USER/Software/] /// </summary> private const string SOFTWARE = "Software"; /// <summary> /// USE MAX COUNT KEYNAME /// </summary> private const string USE_COUNT_KEY_NAME = "UseCount"; /// <summary> /// USE MAX COUNT VALUE /// </summary> private const int USE_COUNT_KEY_VALUE = 3; /// <summary> /// FIRST ONE /// </summary> private const string MESSAGE_FIRST = "您可以免费使用本软件{0}次,感谢您首次使用——欢迎支持COPY版本"; /// <summary> /// USEING /// </summary> private const string MESSAGE_DOING = "您还可以免费使用本软件{0}次,感谢您使用——欢迎支持COPY版本"; /// <summary> /// LAST ONE /// </summary> private const string MESSAGE_LAST = "继续使用,请注册本软件!——欢迎支持COPY版本"; #endregion key value message define /// <summary> /// PRIVATE CONSTRACTOR /// </summary> private ProductsRegistry() { } /// <summary> /// REGESTER TIP /// </summary> public static void RegistryTip() { // CURRENT USE COUNT int currentUseCount = USE_COUNT_KEY_VALUE; // GET ROOT KEY RegistryKey rootkey = Registry.CurrentUser.OpenSubKey(SOFTWARE, true); ; // OPEN KEY RegistryKey regkey = rootkey.OpenSubKey(Constant.PROJECT_NAME, true); // PROJECT'S KEY NOT EXIST if (regkey == null) { // REGISTERED A NEW KEY rootkey.CreateSubKey(Constant.PROJECT_NAME); // OPEN KEY regkey = rootkey.OpenSubKey(Constant.PROJECT_NAME, true); } if (regkey.GetValue(USE_COUNT_KEY_NAME) == null) { // CREATE A SUBKEY AND ADD VALUE TO THIS SUBKEY regkey.SetValue(USE_COUNT_KEY_NAME, currentUseCount, RegistryValueKind.DWord); } try { // GET USE COUNT currentUseCount = (int)regkey.GetValue(USE_COUNT_KEY_NAME); if (currentUseCount <= 0) { regkey.SetValue(USE_COUNT_KEY_NAME, 0,RegistryValueKind.DWord); ShowMessageTip(currentUseCount); Application.Exit(); return; } // SHOW MESSAGE TIP ShowMessageTip(currentUseCount); // REFRESH THIE COUNT regkey.SetValue(USE_COUNT_KEY_NAME, --currentUseCount); } catch (System.Exception ex) { throw ex; } } /// <summary> /// SHOW MESSAGE TIP DIALOG /// </summary> /// <returns></returns> private static int ShowMessageTip(int currentUseCount) { switch (currentUseCount) { case USE_COUNT_KEY_VALUE: return (int)MessageBox.Show(StringUtil.StrConcat(MESSAGE_FIRST, currentUseCount.ToString()), Constant.PROJECT_NAME, MessageBoxButtons.OK, MessageBoxIcon.Information); case 0: return (int)MessageBox.Show(MESSAGE_LAST, Constant.PROJECT_NAME, MessageBoxButtons.OK, MessageBoxIcon.Information); default: return (int)MessageBox.Show(StringUtil.StrConcat(MESSAGE_DOING, currentUseCount.ToString()), Constant.PROJECT_NAME, MessageBoxButtons.OK, MessageBoxIcon.Information); } } } }