我想部署一个附加了许可证的应用程序。但是,我想防止我的 dll 在 Visual Studio 中被轻松引用。
这样做的通常方法是什么?我正在考虑对应用程序进行更新以防止这种情况发生,但是,代码变得依赖于体系结构。我没有针对除 Windows 之外的任何其他架构/平台,但是,在发布构建后对应用程序进行 ngen-ing 对我来说似乎是一种解决方法。有没有其他技术可以实现这一目标?
您不能发送经过 ngen 处理的映像,Ngen.exe必须在目标计算机上运行。有一个专门的服务,由 .NET 安装程序安装,负责处理它。无论如何,它无助于保护任何东西,原始组件也必须仍然存在。
.NET 具有对许可的内置支持,但它仅适用于可设计的类。System.ComponentModel.License 是基类声明。LicFileLicenseProvider 是它的具体实现。
您可以购买 3rd 方的东西,加密狗是无与伦比的。无论哪种方式,您获得知识产权的唯一真正保护是在法庭上。在可见的地方声明版权,确保您的用户在使用您的代码之前经过明确的许可协议步骤。
代码访问安全性 (CAS)。您可以在继承链或方法或程序集的整个过程中强制执行 LinkDemand,这要求所有链接的程序集都具有与您需要的相同的强名称密钥和其他证据。
如果您使用的是安装程序,则可以在安装过程中使用 ngen。SQL Server 执行此操作。
你也可以混淆。它本身并不能阻止链接,但确实很难知道 dll 的作用,从而降低了它对其他进程的“有用性”。
如果您将课程的范围更改为 Friend