Dot-Net

如何防止其他人使用我的 .Net 程序集?

  • January 27, 2012

我有一個程序集,除指定的執行檔外,任何應用程序**都不應使用該程序集。**請給我一些指示。

您可以使用相同的密鑰對程序集和執行檔進行簽名,然後在要保護的類的建構子中進行檢查:

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

這不會停止反思。我想結合下面的一些資訊。如果您絕對需要阻止任何人打電話,最好的解決方案可能是:

  1. ILMerge .exe 和 .dll
  2. 混淆最終的.exe

您還可以檢查呼叫堆棧並獲取每個呼叫者的程序集,並確保它們都使用與程序集相同的密鑰進行簽名。

引用自:https://stackoverflow.com/questions/96624