Самый очевидный ответ, который я могу придумать, - это получить имя и / или путь вызывающего процесса - просто сравните это имя с 7 «разрешенными» программами в вашей библиотеке поддержки.Конечно, они могут создать новый процесс с тем же именем, но они могут не знать об этом.
Другой уровень может состоять в том, чтобы дополнительно сравнить размер исполняемого файла с известным размером для этого приложения.(Вы, вероятно, захотите разрешить достаточно широкий диапазон вокруг ожидаемого размера, в случае, если они вносят изменения в исходный код и / или компилируют с другими параметрами.)
В качестве другой мысли, вы можете попробовать добавитьнекоторые, казалось бы, доброкачественные строки в ресурсах приложения.(«Copyright 2011 ~ Название вашей корпорации ~»). Затем вы можете отсканировать родительский исполняемый файл на наличие магических строк.Если они создают новый продукт, они могут не подумать о создании этого ресурса.
Наконец, как уже отмечал Бен, если вы даете им исходный код, вероятно, не существует надежных решений этой проблемы.(По его словам, в какой момент «модифицированный» код становится новым приложением?) Лучшее, что вы, вероятно, сможете сделать, - это добавить достаточно маленьких контрольно-пропускных пунктов, чтобы они не потрудились использовать эту библиотеку для другого продукта.Вероятно, это зависит от того, насколько они решительны и / или счастливы.