// Primitive run count application (demo) protection
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;
}
Saturday, May 30, 2009
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment