получите уникальный идентификатор машины

Я хочу добраться, уникальный неизменный идентификатор Машины Как порядковый номер Процессора компьютера для распределяют программное обеспечение с копированием.

Я попробовал порядковым номером процессора и порядковым номером жесткого диска, который все изменяют после форматирования и переустановки окон.

Какая-либо идея, как я могу получить неизменный порядковый номер компьютера?

34
задан Kiquenet 22 October 2013 в 10:37
поделиться

6 ответов

Если вам нужен уникальный идентификатор , вы должны сначала определиться с определением уникального идентификатора . Если вы хотите/намереваетесь использовать его для механизма защиты от копирования, используйте что-нибудь простое. Это потому, что если кто-то действительно хочет использовать ваше программное обеспечение, (s)он найдет способ нарушить вашу защиту, учитывая достаточно времени и навыков. В случае с уникальным идентификатором оборудования, просто подумайте о виртуальных машинах и вы увидите, что можно подделать что угодно, чтобы кто-нибудь мог подделать ваше программное обеспечение.

Не так уж много можно взять с ПК и считать его уникальным за всю его жизнь. (Скорее всего, в какой-то момент изменения в аппаратном обеспечении потребуют регенерации идентификатора). Если вам нужно что-то подобное, вы должны исследовать это, используя аутентификацию USB Dongle, которую вы можете отправить своим клиентам.

Если вам просто нужен какой-нибудь уникальный идентификатор, который не так сложно получить, вы можете взять MAC адрес (ненадежный), серийный номер операционной системы или домен и имя пользователя, но все они подвержены подделке. Однако, если ваша главная цель - блокировка неавторизованных людей, вы ничего не продадите, потому что никто не захочет пользоваться вашим программным обеспечением, если его трудно установить, зарегистрировать или переместить с одного ПК на другой, хотя последнее соображение - это часть и часть лицензирования для каждой машины. (Скорее всего, это будет происходить довольно часто.)

В качестве первого шага, сделайте это легко: используйте что-нибудь простое, что нелегко подделать в вашей целевой группе. (Например, имена доменов и пользователей не могут быть легко подделаны корпоративными клиентами, потому что их ПК работают в более крупной среде, реализующей политики и т.д.) Просто забудьте о других, пока у вас не будет этого.

Может быть, вы можете заблокировать их, но это не значит, что они собираются купить ваше программное обеспечение; они просто больше не будут его использовать. Что вы должны учитывать, так это сколько потенциальных клиентов не будет или не захотят платить, потому что вы так усложнили использование вашей программы.

15
ответ дан 27 November 2019 в 16:47
поделиться

редактирование: Я только что видел, что ты имел в виду на c#. Вот лучший способ с неуправляемым кодом:

ManagementClass oMClass = new ManagementClass ("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection colMObj = oMCLass.GetInstances();
foreach(ManagementObject objMO in colMObj)
    Console.WriteLine(objMO["MacAddress"].ToString());
3
ответ дан 27 November 2019 в 16:47
поделиться
[

] Второе предложение слепого использовать MAC-адрес (первого?) сетевого адаптера. Да, MAC-адрес можно подделать, но это имеет побочные эффекты (вы не хотите, чтобы два ПК с одним и тем же MAC-адресом находились в одной сети), и это то, что "ваш обычный пират" не сделает только для того, чтобы иметь возможность использовать ваше программное обеспечение. Учитывая, что не существует 100%-го решения по борьбе с программным пиратством, MAC-адрес является хорошим компромиссом, IMO.[

] [

]Обратите внимание, однако, что адрес изменится, когда пользователь добавит, заменит или удалит сетевую карту (или вообще заменит свой старый ПК), поэтому будьте готовы помочь своим клиентам и дать им новый ключ, когда они изменят конфигурацию оборудования.[

].
3
ответ дан 27 November 2019 в 16:47
поделиться
[

] Посмотрите [] эту статью []. Она очень исчерпывающая и вы найдете, как извлечь различную информацию об оборудовании.[

] [

]Цитата из []article[]:[

] [
] [

]Для получения информации об оборудовании необходимо создать объект класса ManagementObjectSearcher.[

] [
] [
using System.Management;
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from " + Key);
foreach (ManagementObject share in searcher.Get()) {
    // Some Codes ...
}
] [
] [

]Ключ на приведенном выше коде - это переменная, которая заменяется соответствующими данными. Например, чтобы получить информацию о процессоре, необходимо заменить ключ на Win32_Processor.[

] [
]
4
ответ дан 27 November 2019 в 16:47
поделиться

Я останулся бы вдали от использования MAC-адресов. На некоторых оборудовании MAC-адрес может измениться при перезагрузке. Мы узнали довольно рано во время наших исследований, чтобы не полагаться на него.

Взгляните на статью Разработка для защиты и лицензирования программного обеспечения , у которых есть некоторые указатели о том, как разработать и внедрять приложения для уменьшения пиратства.

Обязательный отказ от ответственности и подключения: Компания, которую я согласился, производит Offbyzero Cobalting Cobalsing Cobalsion Revice . Таким образом, он, вероятно, не удивит вас, чтобы услышать, что рекомендую аутсорсировать ваше лицензирование и сосредоточиться на ваших основных компетенциях.

14
ответ дан 27 November 2019 в 16:47
поделиться

Вы можете использовать Создатель WMI Code . Я предполагаю, что вы можете иметь комбинацию «клавиш» (ComplactOrid, Mac и Software Generated Key).

using System.Management;
using System.Windows.Forms;

try
{
     ManagementObjectSearcher searcher = 
         new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor"); 

     foreach (ManagementObject queryObj in searcher.Get())
     {
         Console.WriteLine("-----------------------------------");
         Console.WriteLine("Win32_Processor instance");
         Console.WriteLine("-----------------------------------");
         Console.WriteLine("Architecture: {0}", queryObj["Architecture"]);
         Console.WriteLine("Caption: {0}", queryObj["Caption"]);
         Console.WriteLine("Family: {0}", queryObj["Family"]);
         Console.WriteLine("ProcessorId: {0}", queryObj["ProcessorId"]);
     }
}
catch (ManagementException e)
{
    MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}

Win32_Processor

Получение аппаратных идентификаторов в C # с WMI Peter Bromberg

16
ответ дан 27 November 2019 в 16:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: