Существует замена для инструмента командной строки CASPOL.exe? - PullRequest
2 голосов
/ 08 июня 2010

При попытке запустить .NET-приложение выдает «PolicyException», поскольку «разрешена только одна группа». Инструмент должен перечислить существующие настройки и позволить удалить выбранные настройки. Использование caspol в списке не полезно, это жестоко.

Я видел, что есть простой интерфейс, который позволяет определять НОВЫЕ настройки, но не позволяет перечислять или удалять существующие настройки.

Каспол - это кошмар, неудивительно, что кто-то использует его по своему выбору. С .NET 1.1 Microsoft поставила утилиту конфигурации, но для .NET 2.0 я ничего не нашел.

Ответы [ 4 ]

1 голос
/ 08 июня 2010

Вы можете создать свой собственный инструмент (графический интерфейс или командную строку) с этим фрагментом кода:

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;
    }
}
1 голос
/ 08 июня 2010

Также есть апплет конфигурации для 2.0, думаю, он поставляется с 2.0 SDK.Если он установлен, он должен быть в Admin Tools и называться «Конфигурация Microsoft .NET Framework 2.0».

0 голосов
/ 15 июля 2010

MsCorCfg, похоже, не был доступен в более поздних выпусках Visual Studio.У меня 2010, но я не смог найти этот файл.

0 голосов
/ 08 июня 2010

Утилита является частью SDK в .Net 2.0. Убедитесь, что это установлено.

Кроме того, вам может быть интересно узнать, что .Net 3.5 sp1 и более поздние версии убрали некоторые болевые точки с помощью CAS.

...