CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

.Net如何通过public key/private key实现对assembly的控制访问?

楼主luohualiushui(落花流水)2004-05-02 10:30:01 在 .NET技术 / C# 提问

看书看不太懂  
  大家帮帮忙 问题点数:100、回复次数:11Top

1 楼luohualiushui(落花流水)回复于 2004-05-03 19:40:26 得分 0

upTop

2 楼luohualiushui(落花流水)回复于 2004-05-04 08:27:28 得分 0

upTop

3 楼thinkingforever(努力学习)回复于 2004-05-04 09:05:03 得分 0

upTop

4 楼luohualiushui(落花流水)回复于 2004-05-04 12:33:02 得分 0

upTop

5 楼luohualiushui(落花流水)回复于 2004-05-04 18:10:57 得分 0

UPTop

6 楼redbb(....DB & DEV....抵制日货,人人有责...)回复于 2004-05-04 20:32:20 得分 80

以向程序集分配称为强名称的加密签名,它为程序集提供名称的唯一性并防止他人借用您的程序集名称(名称欺骗)。如果您正在部署一个将被同一台计算机上的多个应用程序共享的程序集,则该程序集必须有强名称。即使只在您的应用程序中使用该程序集,使用强名称也可确保加载该程序集的正确版本。  
   
  生成具有强名称的程序集的第一步是获得加密密钥对。.NET   框架   SDK   包括一个可用来生成密钥对的“强名称”工具   (Sn.exe)。由“强名称”工具生成的密钥对可以保留在文件中,您也可以将它存储在本地计算机的“加密服务提供程序”(CSP)   中。下面的命令使用“强名称”工具生成一个新的密钥对并将它存储在名为   TestKey.snk   的文件中:  
   
  sn   -k   Testkey.snk  
   
  using   System;  
  using   System.Reflection;  
   
  [assembly:AssemblyKeyFileAttribute("TestKey.snk")]  
  Top

7 楼redbb(....DB & DEV....抵制日货,人人有责...)回复于 2004-05-04 20:32:53 得分 0

如何使用全局程序集缓存  
  全局程序集缓存是计算机级存储区,用于存放要由计算机上的若干应用程序共享的程序集。“.NET   框架”提供两种工具来使用缓存。一种工具是   Windows   外壳扩展程序,它使您可以通过“图形用户界面”(GUI)   使用缓存。另一种是称为“全局程序集”工具   (Gacutil.exe)   的命令行工具,它通常用于生成和测试脚本。该命令行工具称为“全局程序集缓存”工具   (Gacutil.exe)。    
   
  全局缓存中的所有程序集都必须有强名称。  
   
   
  查看程序集缓存的内容  
  使用   Windows   资源管理器定位到   %winnt%\assembly   以激活外壳扩展程序。默认视图显示程序集缓存的内容。您还可以使用“全局程序集缓存”工具的   /l   选项来查看缓存内容:    
   
  gacutil   /l  
   
   
  安装程序集  
  若要使用外壳扩展程序来安装程序集,只需将包含该程序集清单的文件拖放到全局程序集缓存目录中即可。若要使用“全局程序集缓存”工具安装程序集,请使用   /i   选项:    
   
  gacutil   /i   math.dll  
   
   
  卸载程序集  
  若要使用外壳扩展程序删除程序集,请右击它并选择“删除”。还可以使用“全局程序集缓存”工具的   /u   选项:    
   
  gacutil   /u   math,ver=1.0.0.0  
   
   
  附带在   Visual   Studio   .NET   时间帧中的   Windows   安装程序版本   (1.5)   具有对程序集缓存的本机支持。当用“Visual   Studio   部署”工具或其他安装工具创建安装程序包时,可以指定您想安装在缓存中的程序集。通过   Windows   安装程序来使用程序集缓存可为您提供标准安装程序的好处,如按需安装、公布、发布等等。    
   
  Top

8 楼hivak47(比尔)回复于 2004-05-04 21:26:00 得分 0

同意   redbb(....Dotneter....)   的说法。Top

9 楼zhougangnj(刚)回复于 2004-05-04 22:52:50 得分 0

studyTop

10 楼turnmissile(会翻跟头的导弹)回复于 2004-05-05 16:27:33 得分 20

通过redbb的方法,是给你所写的assembly设置强名,这样做的方法是告诉其他用户这个assembly在你发表之后没有被别人修改过。基本上那些访问资源的assembly都进行了强名,并且要求其他assembly访问他的时候都要经过强名(当然也有一些是不需要的)。这样就保证了那些没有经过强名的assembly无法通过调用这些有权访问资源的assembly,造成信息的泄漏。  
  当你所定义的assembly访问了某种资源,而你又能保证这种资源不会被其他引用你的assembly所非法破坏(获取或者修改)。而你又希望所有的assembly都能够正常的访问你所提供的assembly,那么你可以定义你的assembly属性(再assemblyInfo.cs里面)为AllowPartiallyTrustedCallers,这样其他用户就能够不具有强名的情况下访问了。  
   
  另外访问控制这个话题,他还这涉及到.net的资源访问的permission,你可以看看cas方面的资料,他和windows的账户权限设定共同组织起了系统安全的防护网。  
  Top

11 楼cdcjk(攀辉)回复于 2004-05-06 10:36:30 得分 0

upTop

相关问题

  • Java 访问控制的问题(public,private,protected,(default))!讨论讨论!
  • 成员变量访问问题?private or protected
  • friend 不能访问private变量?狂晕
  • 关于访问权限的问题:private
  • ADO访问Excel。
  • 外部类竟然可以访问内部类的private成员!!??
  • class里面只有一个private成员,客户怎么访问
  • 初学vc++.net 求助!!不可访问类中的private成员!!!
  • 我在视类定义了一个public函数f()。在框架类CMainFrm这样访问,为何访问不到?
  • 怎样访问导入包中的非public类?急呀!

关键词

  • .net
  • 安装
  • 扩展
  • 应用程序
  • 选项
  • 计算机
  • 文件
  • 内容
  • 程序集
  • 缓存

得分解答快速导航

  • 帖主:luohualiushui
  • redbb
  • turnmissile

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo