CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

救急!!C# 代码安全性,System.Security.SecurityException问题

楼主zhangmeimei(雪薇)2006-03-08 15:18:16 在 .NET技术 / C# 提问

用C#作了一个小程序,在本地机器(本地硬盘)上运行完全正常,可是放到服务器上就出现调试窗口,提示System.Security.SecurityException,抛出异常……,各位大虾怎样解决?在程序中实现,    
  在.NET   Configuration里面可以设置AllCode为FullTrust,可以避免    
  但我想在程序里面设置,请问如何实现 问题点数:100、回复次数:10Top

1 楼jiezhi(风满袖)回复于 2006-03-08 15:21:32 得分 80

参考:  
  using   System;  
  using   System.Collections;  
  using   System.Security;  
  using   System.Security.Policy;  
   
  namespace   Vantechsoft.Phoenix.PhoenixFramework.PluginManager  
  {  
  public   class   PluginSecurityManager  
  {  
  public   PluginSecurityManager()  
  {  
  }  
   
  public   bool   SetPathCodeSecurity(string   path)  
  {  
  try  
  {  
  string   url=MakePathUrl(path);  
  PolicyLevel   machineLevel=FindMachinePolicy();  
   
  //this   code   will   modify   when   securiity   requested  
  PermissionSet   ps=machineLevel.GetNamedPermissionSet("FullTrust");  
   
  UrlMembershipCondition   umc=new   UrlMembershipCondition(url);  
  CodeGroup   pluginCodeGroup=new   UnionCodeGroup(umc,new   PolicyStatement(ps,  
  PolicyStatementAttribute.Exclusive|PolicyStatementAttribute.LevelFinal));  
  pluginCodeGroup.Name="PluginCodeGroup";  
   
                                  if(!machineLevel.RootCodeGroup.Children.Contains(pluginCodeGroup))  
                                  {  
                                          CreatePluginCodeGroup(machineLevel,pluginCodeGroup,null);  
                                  }  
                                  else  
                                  {  
                                  }  
  }  
  catch  
  {  
  return   false;  
  }  
   
  return   true;  
  }  
   
  private   PolicyLevel   FindMachinePolicy()  
  {  
  PolicyLevel   machineLevel=null;  
  IEnumerator   i=SecurityManager.PolicyHierarchy();  
  while(i.MoveNext())  
  {  
  PolicyLevel   level=(PolicyLevel)i.Current;  
  if(level.Label=="Machine")  
  {  
  machineLevel=level;  
  break;  
  }  
  }  
  return   machineLevel;  
  }  
   
  private   void   CreatePluginCodeGroup(PolicyLevel   level,CodeGroup   root,string   url)  
  {  
  level.RootCodeGroup.AddChild(root);  
  SecurityManager.SavePolicyLevel(level);  
  }  
   
  private   void   GenerateCodeGroupName(string   url)  
  {  
   
  }  
   
  private   bool   FindPluginCodeGroup(string   root,string   url)  
  {  
  return   false;  
  }  
   
  private   string   MakePathUrl(string   urlPath)  
  {  
  Url   url=new   Url(urlPath);  
  return   url.Value;  
  }  
  }  
  }  
   
   
   
   
   
  另外参考:  
  http://jiezhi.cnblogs.com/archive/2005/08/01/204482.html  
   
  Top

2 楼justok([热心-冲星])回复于 2006-03-08 15:29:01 得分 15

好象不行的吧,如果程序里可以,那他的安全性就等于白搞了,如果用户把服务器当作信任网站,自动会有FullTrust,或者有可信任的证书Top

3 楼zhangmeimei(雪薇)回复于 2006-03-08 15:36:10 得分 0

谢谢了,高手呀!我试一下  
  Top

4 楼jiezhi(风满袖)回复于 2006-03-08 15:43:35 得分 0

在楼主的环境下,他是有这个权限的.  
   
  这个代码是我以前使用过的Top

5 楼zhangmeimei(雪薇)回复于 2006-03-08 15:48:25 得分 0

谢谢各位的解答  
   
  这段程序好像必须知道路径,  
  但是这是放在服务器上的,路经并不确定  
   
  Top

6 楼zhangmeimei(雪薇)回复于 2006-03-08 15:53:26 得分 0

jiezhi(风满袖)   你好  
   
  我没有修改服务器的权限的  
  就是在我的机器上做完后,要放到服务器上去运行,  
  现在的问题是:在我的本地机器上运行是没有问题的,但是到服务器上,就抛出这个异常,出现调试窗口  
  不好意思,我刚学C#不久,可能有些地方表达不是很好,请各位高手见谅Top

7 楼jiezhi(风满袖)回复于 2006-03-08 16:01:24 得分 0

如果运行程序的用户没有权限的话,那你的代码就无能为了了.  
   
  你可以让管理员通过.net   配置工具设置代码组(code   group),设置权限,将你的代码的权限扩大.  
   
  路径是很好处理的,你可以通过代码获得自己所在的路径的啊  
  Top

8 楼hy98521(斯达克)回复于 2006-03-08 16:40:23 得分 5

Directory  
  里面是路径的库文件Top

9 楼zhangmeimei(雪薇)回复于 2006-03-08 17:34:07 得分 0

TO:jiezhi(风满袖)    
  那样还是需要管理员设置code   group的权限~~~~  
  不过还是谢谢了,看来还是必须由管理员设置代码的权限了Top

10 楼zhangmeimei(雪薇)回复于 2006-03-09 13:25:19 得分 0

解决方法:设置code   group   的属性进行,如果要在intranet运行,将其设为fulltrust(计算机管理--Microsoft.NET   Framework   1.1Configuration里设定)  
  感谢jiezhi(风满袖)    
  以及各位的帮助  
  散分了!  
  Top

相关问题

  • 谁记得对比C++和JAVA安全性的那个例子
  • C++太破了,安全性真是一塌糊涂
  • 用c做个系统,求救!!!!急!
  • 高手赐教:关于保护.NET C#开发的DLL安全性问题
  • 求C/C++的加法运算(江湖救急,急,急,急!!!)
  • 救急!救急!
  • 救急,救急
  • 救急!救急!
  • 2000安全性
  • thinking in C++的例子出错,救急急急急急急!!

关键词

  • .net
  • c#
  • 代码
  • 服务器
  • security
  • code
  • plugincodegroup
  • 权限
  • jiezhi
  • machinelevel

得分解答快速导航

  • 帖主:zhangmeimei
  • jiezhi
  • justok
  • hy98521

相关链接

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

广告也精彩

反馈

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