假设我已经编写了一个.net dll文件,并希望将其与我的应用程序一起分发。我怎样才能阻止任何精明的用户安装一个VS的副本,从这个DLL的引用添加到他们自己的应用程序?如何防止我的.Net dll被添加为参考?
4
A
回答
8
没有办法阻止用户添加引用。这是来自DLL部分的被动行为,没有任何事情可以阻止它发生。
虽然你可以做的是,添加引用一个不值得的操作。例如,如果DLL中的所有类型都是内部的或私有的,则不仅仅是为用户添加引用以使用DLL中的类型。此外,混淆DLL会使它变得更加困难。
1
我严重怀疑这是可能的。即使是这样,具有全部推力的集会也可以伪造所有证据并假装成你的程序。
5
你不能阻止某人添加对你的dll的引用。然而,你可以做的是让他们难以使用它,如果他们添加引用。
代码访问安全性(CAS)可用于防止未经授权的代码调用到程序集中,但这会影响调用的性能,并且出于此目的过于矫枉过正。
另一种方法是将dll中的所有内容标记为内部。如果您有其他需要访问dll中的类的程序集,请使用InteralsVisibleTo属性将它们设置为好友程序集。这允许其他程序集访问您的dll的内部类。将其与已签署的程序集(与InternalsVisibleTo
定义一起使用)结合使用,应该足够了。
2
您可能会发现“StrongNameIdentityPermission”类有用
1
虽然.NET不允许真正的静态链接,您可以伪造它,打包DLL和EXE在一个组件。这里有一个工具可以做到这一点: ILMerge 可能有其他人。
0
您可能会混淆DLL(工具 - > Dotfuscator社区版),使其无法引用您的DLL。
相关问题
- 1. 参考添加DLL
- 2. C#:添加DLL参考
- 3. 无法添加DLL参考VS 2008
- 4. 添加“System.Data.SQLite”作为参考
- 5. VS2010添加一个.dll参考错误
- 6. 为Web参考添加服务参考
- 7. 添加/删除dll参考c#
- 8. 如何防止在.NET中智能加载DLL?
- 9. 如何防止.NET JSON被缓存
- 10. 添加非“类型库”dll作为参考VS C++ 2008
- 11. 防止jQuery多重参考
- 12. 如何防止IIS尝试加载dll?
- 13. 如何添加'Microsoft.VisualStudio.TeamSystem.Data.UnitTesting'参考
- 14. 什么使用指令我用于新添加的dll参考
- 15. 防止在Visual Studio中添加作为参考的调试项目
- 16. 参考用于.NET FW 2.0的IBM.Data.Informix dll
- 17. 无法添加API DLL作为对Windows Phone 8的参考
- 18. 如何添加在.NET的DLL
- 19. 防止挂钩dll加载
- 20. Visual Studio中添加DLL作为参考错误
- 21. 防止访问处置的参考
- 22. 如何System.Windows.Controls.Frame在我的项目添加到我的参考
- 23. 如何将清单添加到.NET DLL?
- 24. 如何防止javascript被多次加载
- 25. 参考C++ dll
- 26. 项目的参考DLL的路径“魔法”,当DLL被删除
- 27. 我如何防止被点击代码中的链接时,这个链接带我去,使参考
- 28. 如何防止将app.config集成到.net库(dll)
- 29. Bloomberglp.Blpapi添加参考
- 30. 防止default.aspx添加
如果您需要它,Visual Studio中会内置一个免费混淆器。 (工具 - > Dotfuscator社区版) – 2009-07-21 22:08:20
非常感谢 - 我一定会看看保护我的程序集,虽然它发生在我身上,如果dll中的所有类型都是私有的或内部的,该dll不会非常有用。我也看了一下模糊处理 - 和Dotfuscator CE玩得很快,看起来没问题 - 但可能需要购买专业版,因为CE看起来不够强大。 – 2009-07-21 23:08:41