Не идеально. LinkDemand применяется только в среде с частичным доверием. Код, работающий с полным доверием, может также использовать отражение для доступа к закрытым типам и вообще обходить любую защиту, которую вы хотите обсудить.
Возможно, вы хотите, чтобы ваш код C ++ / CLI вызывал Assembly :: GetEntryAssembly и сверял его с белым списком утвержденных приложений, для которых предназначена библиотека.
Конечно, вы хотите минимизировать объем управляемого кода (и атрибутов), участвующих в проверках, поскольку управляемый код действительно легко декомпилировать.
На самом деле, смешивая время от времени проверку с основной логикой кода C ++, у вас есть единственная надежда, что она не будет обойдена.