参考几位大虾的文章,我写了一个ClassLibrary5.dll.首先用SN工具建了一个key.snk,把公钥导出来保存.我用的是VS2005
using System;
using System.Security.Permissions;namespace ClassLibrary5
{
public class SecuredClass
{
public SecuredClass()
{ }
[StrongNameIdentityPermissionAttribute(SecurityAction.LinkDemand,PublicKey="0024000004800000940000000602000000240000525341310004000001000100732e542fb8dec9abd7561caafc94135a379cad08513143f315fdca109b428866e421694b4c16dee7bd3aff60814dcc7f2779662597261c94f3d587cc5516bc7aceb2c2db251597690e9038466f74dc4eaabc1c842ea43ac9d0fcfbdf42ba63e13fe9309095aab9351f0b7cf1f24d2a1f67ef00fc2c8cad7b5041966f213913b6")]
private string getTopSecretInformation()
{
return "secret code:000111";
}
}
}
然后又在项目-项目属性-签名里面用key.snk为程序集签名.延迟签名没选.这样不就行了么?不是说只有同样经过签名的程序才可以访问么?
我随便建立了一个控制台应用程序.也没签名,直接就是项目-添加引用,找到ClassLibrary.dll,确定.
然后ClassLibrary5.SecuredClass secClass = new ClassLibrary5.SecuredClass();
Console.WriteLine(secClass.getTopSecretInformation());
却能够访问.不是说可以限制别的程序访问我写的DLL组件么?
注:因为是VS2005,所以没法用[assembly:AssemblyKeyFile(@"c:\key.key")].
或者要用什么方式才可以限制别人访问我写的DLL呢?
大家帮帮忙.
using System;
using System.Security.Permissions;namespace ClassLibrary5
{
public class SecuredClass
{
public SecuredClass()
{ }
[StrongNameIdentityPermissionAttribute(SecurityAction.LinkDemand,PublicKey="0024000004800000940000000602000000240000525341310004000001000100732e542fb8dec9abd7561caafc94135a379cad08513143f315fdca109b428866e421694b4c16dee7bd3aff60814dcc7f2779662597261c94f3d587cc5516bc7aceb2c2db251597690e9038466f74dc4eaabc1c842ea43ac9d0fcfbdf42ba63e13fe9309095aab9351f0b7cf1f24d2a1f67ef00fc2c8cad7b5041966f213913b6")]
private string getTopSecretInformation()
{
return "secret code:000111";
}
}
}
然后又在项目-项目属性-签名里面用key.snk为程序集签名.延迟签名没选.这样不就行了么?不是说只有同样经过签名的程序才可以访问么?
我随便建立了一个控制台应用程序.也没签名,直接就是项目-添加引用,找到ClassLibrary.dll,确定.
然后ClassLibrary5.SecuredClass secClass = new ClassLibrary5.SecuredClass();
Console.WriteLine(secClass.getTopSecretInformation());
却能够访问.不是说可以限制别的程序访问我写的DLL组件么?
注:因为是VS2005,所以没法用[assembly:AssemblyKeyFile(@"c:\key.key")].
或者要用什么方式才可以限制别人访问我写的DLL呢?
大家帮帮忙.
dll的授权访问
ref:http://www.chenjiliang.com/Article/View.aspx?ArticleID=96&TypeID=5
VS2005,所以没法用[assembly:AssemblyKeyFile(@"c:\key.key")].
------------------------------
vs2005需要手动添加AssemblyInfo文件good luck
[assembly:AssemblyKeyFile(@"c:\key.key")]
但是有警告:
使用命令行选项“/keyfile”或适当的项目设置代替“AssemblyKeyFile” 所以我才在项目-项目属性-签名里设置的签名啊.
我本来想放在一个DLL中间的.这么看来是不可以的了.另外.
http://www.chenjiliang.com/Article/View.aspx?ArticleID=96&TypeID=5
文章里写的是不对的还是怎么着?希望高手赐教啊.