DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

Snippets has posted 5883 posts at DZone. View Full User Profile

Primitive Run Count Application (demo) Protection

04.24.2007
| 1934 views |
  • submit to reddit
        
        public static int GetRunCount()
        {
            int count = 0;
            string guid = "";
            RegistryKey regKey = Registry.CurrentUser.OpenSubKey(@"Software\Classes\Software\Settings", true);

            if (regKey != null)
            {
                string temp = (string)regKey.GetValue("Options");
                guid = (string)regKey.GetValue("Guid");
                count = (int)(temp[0] ^ guid[0]);
            }

            return count;
        }
        public static int IncrementRun()
        {
            int count = 0;
            string guid = "";
            RegistryKey regKey = Registry.CurrentUser.OpenSubKey(@"Software\Classes\Software\Settings", true);

            if (regKey == null)
            {
                regKey = Registry.CurrentUser.CreateSubKey(@"Software\Classes\Software\Settings");
                guid = Guid.NewGuid().ToString();
                regKey.SetValue("Guid", guid);
                count = 0;
            }
            else
            {
                string temp = (string)regKey.GetValue("Options");
                guid = (string)regKey.GetValue("Guid");
                count = (int)(temp[0] ^ guid[0]);
            }

            Random rnd = new Random();
            count++;
            string value = string.Format("{0}{1}", (char)(guid[0] ^ count), GenerateGarbage(15));

            regKey.SetValue("Options", value);

            return count;
        }
        private static string GenerateGarbage(int length)
        {
            string retVal;
            if (length < 0)
                retVal = null;
            else if (length == 0)
                retVal = "";
            else
            {
                Random rnd = new Random();
                StringBuilder str = new StringBuilder();

                for (int i = 0; i < length; i++)
                    str.Append((char)rnd.Next(33, 126));
                retVal = str.ToString();
            }
            return retVal;
        }