我创建一个.NET(WPF)应用程序,并将其编译为.EXE。然后我创建了第二个项目,并添加了对已编译的.exe的引用,我可以看到所有的类和表单,并可以将它们用于自动化等。
我想阻止其他人使用我编译的.exe作为.dll,所以我将所有类改为'Friend'而不是'Public',但这对于(wpf)表单不起作用。每次我创建一个新课程时,我都必须记得把它改成'朋友'。
那么,有没有更好的解决方案来阻止您的应用程序用作DLL?
更新:我知道.NET很容易被分解,并且访问修饰符可以被确定的“破解者”修改。但我只是想让它变得更难,而不仅仅是添加一个参考。
也许我应该以不同的方式陈述我的问题:如何在我的项目“朋友”中制作所有表格/类,而不是为每个项目指定。
答案 0 :(得分:3)
最终你无能为力;反射将让你绕过你做的任何访问声明。
您可能会对代码进行模糊处理,以使其更难以理解并因此使用,但它无法防止确定的入侵。
答案 1 :(得分:2)
执行此操作的最佳方法是在最终用户许可协议中说明不允许这样做。
将班级更改为朋友不会阻止有人使用它,如果他们真的想要。他们所要做的就是修改DLL以使类公开并且您的保护系统失败。