【问题标题】:Exists a replacement for the command-line-tool CASPOL.exe?是否存在命令行工具 CASPOL.exe 的替代品?
【发布时间】:2010-06-08 14:40:04
【问题描述】:

当尝试执行 .NET-App 时,它会抛出“PolicyException”,因为“只允许一个组”。 该工具应列出现有设置,并允许删除选定的设置。 用 caspol 列出是没有用的,很残忍。

我看到有一个简单的 gui 前端,它允许定义新设置,但不允许列出或删除现有设置。

Caspol 是一场噩梦,难怪有人会选择使用它。对于 .NET 1.1,Microsoft 提供了配置实用程序,但对于 .NET 2.0,我一无所获。

【问题讨论】:

    标签: .net .net-2.0 code-access-security caspol


    【解决方案1】:

    2.0 也有一个配置小程序,认为它与 2.0 SDK 一起提供。如果你安装了它,它应该在Admin Tools 中并被称为“Microsoft .NET Framework 2.0 配置”。

    【讨论】:

      【解决方案2】:

      你可以用这段代码做你自己的工具(gui或命令行):

      static void SetPermission( string target ) {
          try {
              // Find the machine policy level
              PolicyLevel machinePolicyLevel = null;
              System.Collections.IEnumerator policyHierarchy = SecurityManager.PolicyHierarchy();
      
              while ( policyHierarchy.MoveNext() ) {
                  PolicyLevel level = (PolicyLevel)policyHierarchy.Current;
                  if ( level.Label == "Machine" ) {
                      machinePolicyLevel = level;
                      break;
                  }
              }
      
      
              if ( machinePolicyLevel == null ) {
                  throw new ApplicationException(
                      "Could not find Machine Policy level. Code Access Security " +
                      "is not configured for this application."
                      );
              }
      
              // Create a new FullTrust permission set
              PermissionSet permissionSet = new NamedPermissionSet( "FullTrust" );
      
              IMembershipCondition membershipCondition = new UrlMembershipCondition( target );
      
              // Create the code group
              PolicyStatement policyStatement = new PolicyStatement( permissionSet );
              CodeGroup codeGroup = new UnionCodeGroup( membershipCondition, policyStatement );
              codeGroup.Description = "Custom code group created by PermSet utility.";
              codeGroup.Name = "CustomCodeGroup-" + Guid.NewGuid().ToString();
      
              // Add the code group
              machinePolicyLevel.RootCodeGroup.AddChild( codeGroup );
      
              // Save changes
              SecurityManager.SavePolicy();
          }
          catch ( Exception ex ) {
              Console.WriteLine();
              Console.WriteLine( ex.ToString() );
              throw;
          }
      }
      

      【讨论】:

        【解决方案3】:

        该实用程序是 .Net 2.0 中 SDK 的一部分。确保已安装。

        另外,您可能有兴趣知道 .Net 3.5 sp1 和后来的 CAS 消除了一些痛点。

        【讨论】:

        • 谢谢,它有效!该工具是“Mscorcfg.msc”,并与 SDK 一起安装(tx 用于超链接)。我在以下位置找到它:C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin 无论如何这很复杂,但是在我重置所有设置后 PolicyException 消失了,只设置了需要的新设置。跨度>
        【解决方案4】:

        MsCorCfg 似乎没有在 Visual Studio 的更高版本中提供。我有 2010,但找不到这个文件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-17
          • 2011-12-11
          • 1970-01-01
          • 1970-01-01
          • 2013-01-20
          • 1970-01-01
          • 2011-08-12
          • 2023-03-03
          相关资源
          最近更新 更多