xme*_*men 21 .net c# strongname digital-certificate .net-assembly
我有一个具有1个引用程序集的应用程序(test.exe,test.dll)
我想要的是在test.exe运行时,它应该将发布者名称显示为"TestCompany".
为此,我对它进行了数字签名,它就是我想做的.如果我改变test.exe发布者名称的一个字节是"未知".这很好.
但是,如果我改变了test.dll,应用程序运行时没有任何反应,并将发布者名称显示为"TestCompany".哪个对我不好.
所以我把强名称放在app.config中test.dll并添加<bypassTrustedAppStrongNames enabled="false" />.
再一次,没有区别.所以我再次搜索并发现bypassTrustedAppStrongNames只检查程序集是否具有强名称.不是验证.这对我来说再好不过了.
我真正想要的是保护用户,而不是我的应用程序.如果用户运行我的应用程序并且它从我这里说出来,它必须来自我的每个字节.如果应用程序被更改,即使是单个字节,它也必须通知用户,而不是来自我.这是数字签名与强名称一起做的,但它们似乎都不是那么好.或者我错过了什么?
我能想到的最后一种可能的方法是手动检查程序集的强名称.
PS:目标.net框架是2.0
我的大多数重要程序集都没有作为参考加载到我的项目中。我所做的是声明互操作接口(所有项目都将其作为基础...是的,这被引用了..),然后我使用以下方法在运行时加载所有程序集:
Assembly assembly = Assembly.Load("myDll, Version=1.0.0.1, Culture=neutral, PublicKeyToken=9b35aa32c18d4fb1");
Type type = assembly.GetType("MyClass");
object instanceOfMyType = Activator.CreateInstance(type);
Run Code Online (Sandbox Code Playgroud)
我使用它有几个原因。我必须根据用户/客户配置调用不同的类实现。这似乎也是一个不错的选择,可以保证您使用我的公共令牌和版本加载特定的程序集。
经过一番研究,我发现了这些帖子:
嗯,看到你的问题后我有点震惊。它让我担心现在引用我的 DLL。我不知道这有多安全,但它似乎比仅仅引用它更安全。
我在 MS 文档中没有找到任何使用Assembly.Load和 的参考bypassTrustedAppStrongNames。我稍后会运行一些测试,但使用它似乎更安全。
| 归档时间: |
|
| 查看次数: |
583 次 |
| 最近记录: |