none
Как лучше сделать демо версию? WPF RRS feed

  • Вопрос

  • Программа должна работать например 30 дней. После этого требует ключ. Ключ генерируется по характеристикам железа. Как лучше сделать проверку на время работы программы? Куда положить или записать дату начала работы демки что бы свести к минимуму взлом и др. И еще вопрос, как можно получить уникальный код железа пользователя?
    28 ноября 2011 г. 9:02

Ответы

  • > как можно получить уникальный код железа пользователя?
     

    с помощью WMI можно получить параметры железа
    см. Computer System Hardware Classes

    например, чтобы получить версию BIOS надо:
    подключить к проекту сборку System.Management.dll

    using System.Collections.Generic; 
    using System.Linq;
    using System.Management;
    ...
    
    var res = from mo in WmiSearch("SELECT * FROM Win32_BIOS")
                           select mo.GetPropertyValue("Version");
    var version = res.First();
    ...
    
    public static IEnumerable<ManagementObject> WmiSearch(string query)
    {
        var searcher = new ManagementObjectSearcher(query);
        foreach (ManagementBaseObject mbo in searcher.Get())
        {
            var mo = (mbo as ManagementObject);
            if (mo != null)
                yield return mo;
        }
    }
    
    
       

    • Изменено Malobukv 28 ноября 2011 г. 9:28
    • Предложено в качестве ответа Malobukv 9 декабря 2011 г. 14:42
    • Помечено в качестве ответа Siompc 10 декабря 2011 г. 13:37
    28 ноября 2011 г. 9:28
  • На самом деле вопрос в цене. Если не жалко денег то можно купить специальные программы которые труднее взломать (стоят они от "не мало" до "дорого").

    Лично я реализовал простейшую систему которую взломает больше половины местных форумчан, но при этом регулярно получаю оплату за программу.

    Вывод: для продолжения обсуждения, расскажи на какую аудиторию рассчитан продукт или на какую степень сложности в защите рассчитываешь ты?


    Влюблен в WPF Не пишу на C#
    • Помечено в качестве ответа Siompc 10 декабря 2011 г. 13:37
    28 ноября 2011 г. 14:01
    Отвечающий
  • > как получить параметры не биоса а жесткого диска?

      
     
    для всех физических дисков вернет имя и серийный номер:
    (код метод WmiSearch здесь)
     
     

    foreach(var mo in WmiSearch("SELECT * FROM Win32_DiskDrive"))
    {
        var sn = mo.GetPropertyValue("SerialNumber");
        var n = mo.GetPropertyValue("Name");
        System.Diagnostics.Trace.WriteLine(n + " " + sn);
    }
    
     
     
    список других параметров здесь
     
     
     

    • Предложено в качестве ответа Malobukv 9 декабря 2011 г. 14:42
    • Помечено в качестве ответа Siompc 10 декабря 2011 г. 13:37
    9 декабря 2011 г. 14:42

Все ответы

  • > как можно получить уникальный код железа пользователя?
     

    с помощью WMI можно получить параметры железа
    см. Computer System Hardware Classes

    например, чтобы получить версию BIOS надо:
    подключить к проекту сборку System.Management.dll

    using System.Collections.Generic; 
    using System.Linq;
    using System.Management;
    ...
    
    var res = from mo in WmiSearch("SELECT * FROM Win32_BIOS")
                           select mo.GetPropertyValue("Version");
    var version = res.First();
    ...
    
    public static IEnumerable<ManagementObject> WmiSearch(string query)
    {
        var searcher = new ManagementObjectSearcher(query);
        foreach (ManagementBaseObject mbo in searcher.Get())
        {
            var mo = (mbo as ManagementObject);
            if (mo != null)
                yield return mo;
        }
    }
    
    
       

    • Изменено Malobukv 28 ноября 2011 г. 9:28
    • Предложено в качестве ответа Malobukv 9 декабря 2011 г. 14:42
    • Помечено в качестве ответа Siompc 10 декабря 2011 г. 13:37
    28 ноября 2011 г. 9:28
  • На самом деле вопрос в цене. Если не жалко денег то можно купить специальные программы которые труднее взломать (стоят они от "не мало" до "дорого").

    Лично я реализовал простейшую систему которую взломает больше половины местных форумчан, но при этом регулярно получаю оплату за программу.

    Вывод: для продолжения обсуждения, расскажи на какую аудиторию рассчитан продукт или на какую степень сложности в защите рассчитываешь ты?


    Влюблен в WPF Не пишу на C#
    • Помечено в качестве ответа Siompc 10 декабря 2011 г. 13:37
    28 ноября 2011 г. 14:01
    Отвечающий
  • Хорошо, если простую систему, то где лучше сохранить дату начала демки? :)
    9 декабря 2011 г. 14:23
  • Можно сразу в нескольких местах... если поместить запись в реестр? Это пойдет как вариант?
    9 декабря 2011 г. 14:24
  • Да, можно примерчик как получить параметры не биоса а жесткого диска? :) Спасибо!
    9 декабря 2011 г. 14:26
  • > как получить параметры не биоса а жесткого диска?

      
     
    для всех физических дисков вернет имя и серийный номер:
    (код метод WmiSearch здесь)
     
     

    foreach(var mo in WmiSearch("SELECT * FROM Win32_DiskDrive"))
    {
        var sn = mo.GetPropertyValue("SerialNumber");
        var n = mo.GetPropertyValue("Name");
        System.Diagnostics.Trace.WriteLine(n + " " + sn);
    }
    
     
     
    список других параметров здесь
     
     
     

    • Предложено в качестве ответа Malobukv 9 декабря 2011 г. 14:42
    • Помечено в качестве ответа Siompc 10 декабря 2011 г. 13:37
    9 декабря 2011 г. 14:42
  • Да! Спасибо! )) И еще один момент... Допустим ключ смотрит не истекла ли дата. А если дата на компьютере стоит 1991 год... Проверить дату можно только через интернет? Или есть еще какие то варианты? Как автономные программы без доступа проверяют дату и срок действия ключа?
    10 декабря 2011 г. 12:46
  • Попробую сам похимичить. Не получится - отпишусь :)
    10 декабря 2011 г. 13:37