当尝试执行.NET-App时,它会抛出“PolicyException”,因为“只允许一个组”。 该工具应列出现有设置,并允许删除所选设置。 使用caspol列表没有帮助,这很残酷。
我见过有一个简单的gui-frontend,允许定义新设置,但不允许列出或删除现有设置。
Caspol是一场噩梦,难怪有人会选择使用它。使用.NET 1.1,Microsoft提供了一个配置实用程序,但对于.NET 2.0,我什么都没找到。
答案 0 :(得分:1)
还有一个2.0的配置小程序,认为它附带2.0 SDK。如果安装它,它应该在Admin Tools
中,并称为“Microsoft .NET Framework 2.0配置”。
答案 1 :(得分:1)
您可以使用以下代码执行自己的工具(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;
}
}
答案 2 :(得分:0)
该实用程序是.Net 2.0中SDK的一部分。确保已安装。
另外,您可能有兴趣知道.Net 3.5 sp1以及后来用CAS删除了一些痛点。
答案 3 :(得分:0)
以后的Visual Studio版本似乎没有提供MsCorCfg。我有2010年,但无法找到此文件。