Question: In one of my apps I must distinguish my own included addins from others' addins.  

They are signed with different keys each and so is the host app. 

Is there any way to distinguish my assemblies from others' assemblies? (Possibly with the help of the signing key)

Answer: 
If all your assemblies are signed you can use either `GetPublicKey()` or `GetPublicKeyToken()`

```
 Assembly a =...
 a.GetName().GetPublicKeyToken();

 Assembly a =...
 a.GetName().GetPublicKey();

```

and would be more convenient than keeping list of GUID and would work with future assemblies too.
You can accomplish this by checking the strong name signature. See [Checking For A Valid Strong Name Signature](http://bit.ly/uDTfKS) for how to this. Note that the article refers to using P/invoke with StrongNameSignatureVerificationEx, but if you are using .NET 4.0 or above you should substitute [ICLRStrongName::StrongNameSignatureVerificationEx](http://bit.ly/rw3UC9). 

See [Public Keys and Public Key Tokens](http://bit.ly/rSCump) for what a public key token actually is. Given that it is only a hash of the public key, and therefore easily duplicated or extracted and then injected into an untrusted assembly, it isn't a secure mechanism for validating an assembly.