Я пытаюсь внедрить функцию в программное обеспечение нашей команды, с помощью которой пользователь не сможет использовать бесплатную версию программного обеспечения за определенный период времени. Я видел особенность в каком-то программном обеспечении, в котором, если вы попытаетесь удалить его после окончания пробного периода, а затем переустановите его, будет отказано в доступе. Я хочу также представить эту функцию.
1) Как узнать, что программное обеспечение было предварительно установлено на конкретном компьютере. Я попытался найти это, и я узнал, что редактор реестра окон делает запись обо всем установленном программном обеспечении и имеет свою запись даже после его удаления. Может ли редактор реестра помочь мне в разработке этой функции. Если да, можете ли вы рассказать мне, как написать код на C++, с помощью которого я могу прочитать редактор реестра.
2) Есть ли какая-то другая особенность на вашем компьютере, которая уникальна для него, как MAC-адрес, который я могу сделать с помощью кода на C++.
Пробный период кодирования в программном обеспечении
ответ
* вы можете использовать приведенный ниже пример, как предложение *
HKEY hKey;
LONG lRes = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Perl", 0, KEY_READ, &hKey);
bool bExistsAndSuccess (lRes == ERROR_SUCCESS);
bool bDoesNotExistsSpecifically (lRes == ERROR_FILE_NOT_FOUND);
std::wstring strValueOfBinDir;
std::wstring strKeyDefaultValue;
GetStringRegKey(hKey, L"BinDir", strValueOfBinDir, L"bad");
GetStringRegKey(hKey, L"", strKeyDefaultValue, L"bad");
LONG GetDWORDRegKey(HKEY hKey, const std::wstring &strValueName, DWORD &nValue, DWORD nDefaultValue)
{
nValue = nDefaultValue;
DWORD dwBufferSize(sizeof(DWORD));
DWORD nResult(0);
LONG nError = ::RegQueryValueExW(hKey,
strValueName.c_str(),
0,
NULL,
reinterpret_cast<LPBYTE>(&nResult),
&dwBufferSize);
if (ERROR_SUCCESS == nError)
{
nValue = nResult;
}
return nError;
}
LONG GetBoolRegKey(HKEY hKey, const std::wstring &strValueName, bool &bValue, bool bDefaultValue)
{
DWORD nDefValue((bDefaultValue) ? 1 : 0);
DWORD nResult(nDefValue);
LONG nError = GetDWORDRegKey(hKey, strValueName.c_str(), nResult, nDefValue);
if (ERROR_SUCCESS == nError)
{
bValue = (nResult != 0) ? true : false;
}
return nError;
}
LONG GetStringRegKey(HKEY hKey, const std::wstring &strValueName, std::wstring &strValue, const std::wstring &strDefaultValue)
{
strValue = strDefaultValue;
WCHAR szBuffer[512];
DWORD dwBufferSize = sizeof(szBuffer);
ULONG nError;
nError = RegQueryValueExW(hKey, strValueName.c_str(), 0, NULL, (LPBYTE)szBuffer, &dwBufferSize);
if (ERROR_SUCCESS == nError)
{
strValue = szBuffer;
}
return nError;
}
Есть несколько вещей, которые вы можете сделать в зависимости от того, что ваша программа должен делать. Если документ ориентирован, удалите из программы «Сохранить», так что люди могут видеть, что это работает, но на самом деле не используется, пока они не платят. Если база данных ориентирована, положите предел на количество записей программа может иметь дело.
Во время установки или при запуске программы в первый раз используйте дату, время, номер тома, соответствующий тег, место на жестком диске и т. Д., Чтобы сгенерировать номер и сохранить его в реестре. Это становится «кодом активации». Когда клиент платит, они должны предоставить вам номер. Вы используете номер в качестве ввода секретного алгоритма для генерации ключа разблокировки. Остальное зависит от вашего воображения.
Посмотрите на RegOpenKeyEx и RegSetValueEx и на соответствующие страницы для доступа к реестру.
Для получения МАС-адреса смотрите GetAdaptersInfo - и больше информации в this question тоже.
- 1. Период времени и функциональный период Пробный период
- 2. Пробный период для приложения
- 3. Использование таймеров в встроенном программном обеспечении ARM
- 4. Пробный период iPhone для приложения
- 5. Поиск уязвимостей в программном обеспечении
- 6. CA в программном обеспечении R
- 7. Бесплатный пробный период премиального обслуживания
- 8. Пробный период для приложения android
- 9. Расширить пробный период программного обеспечения
- 10. C++ во встроенном программном обеспечении
- 11. Внедрить бесплатный пробный период в iOS
- 12. Как отключить GPS в Android-программном программном обеспечении?
- 13. Получение прокси-информации о программном обеспечении Linux
- 14. В чем смысл Ecosystem в программном обеспечении?
- 15. Google Покупки и пробный период Google Inapp
- 16. Как установить пробный период для приложения Windows?
- 17. Ошибка в программном обеспечении Slot machine
- 18. Исключение из контроллера в промежуточном программном обеспечении
- 19. Использование VBA в вашем собственном программном обеспечении
- 20. Изменить OWIN Request.Body в промежуточном программном обеспечении
- 21. Создать напоминания в программном обеспечении iphone ...?
- 22. Encapsulate Use Cases в программном обеспечении
- 23. Изменить заголовок запроса в промежуточном программном обеспечении
- 24. Сбой создания JVM в программном обеспечении gephi
- 25. Обнаружение ответного перенаправления в промежуточном программном обеспечении
- 26. Счетчик в программном обеспечении Tia Portal
- 27. Изменить адрес в промежуточном программном обеспечении Django
- 28. Аудио: уменьшение битовой глубины в программном обеспечении
- 29. Добавление нескольких кадров в программном обеспечении linearlayout
- 30. Определяет качество камеры в программном обеспечении Android
Это может быть интересно, если вы смотрите на такие вещи: http://sigpipe.macromates.com/2004/09/05/using-openssl-for-license-keys/ – Will
Интересно, что ваш продукт для и как он будет работать, если вы не можете получить такие основные вещи, как чтение/запись в реестр из MSDN или других образцов. Кроме того, доступ к реестру можно просто отслеживать и эти ключи удалять. Кроме того, реестр уже слишком загрязнен данными. Сосредоточьтесь на функции вашего приложения и только потом подумайте о защите от копирования. – JeffRSon
JeffRSon: «Кроме того, доступ к реестру можно просто отслеживать, а эти ключи удалять». Простое решение: смените системное время на 2099 год. Установите программное обеспечение. Измените системное время назад. – SigTerm