Dot-Net
如何防止其他人使用我的 .Net 程序集?
我有一個程序集,除指定的執行檔外,任何應用程序**都不應使用該程序集。**請給我一些指示。
您可以使用相同的密鑰對程序集和執行檔進行簽名,然後在要保護的類的建構子中進行檢查:
public class NotForAnyoneElse { public NotForAnyoneElse() { if (typeof(NotForAnyoneElse).Assembly.GetName().GetPublicKeyToken() != Assembly.GetEntryAssembly().GetName().GetPublicKeyToken()) { throw new SomeException(...); } } }
在 .Net 2.0 或更高版本中,將所有內容都設置為內部版本,然後使用 Friend Assemblies
http://msdn.microsoft.com/en-us/library/0tke9fxk.aspx
這不會停止反思。我想結合下面的一些資訊。如果您絕對需要阻止任何人打電話,最好的解決方案可能是:
- ILMerge .exe 和 .dll
- 混淆最終的.exe
您還可以檢查呼叫堆棧並獲取每個呼叫者的程序集,並確保它們都使用與程序集相同的密鑰進行簽名。