Herramienta Calculadora de permisos (Permcalc.exe)

Actualización: noviembre 2007

La herramienta Minimum Grant Set Determination (Permcalc.exe) se utiliza para calcular los llamadores de permisos a los que se debe conceder acceso a los puntos de entrada públicos de un ensamblado. Esta herramienta es nueva en .NET Framework versión 2.0. Está pensada para su uso por usuarios expertos.

PermCalc [options] assemblyName [assemblyDependencyName…]

Parámetros

Opción

Descripción

-CleanCache

Reconstruye todos los archivos de la caché.

-HostProtection

Informa sobre las categorías protegidas de HostProtectionAttribute.

-Internet

En aquellos casos donde no se pueden determinar los valores exactos de los permisos, se utilizan los permisos de la zona de Internet como una estimación. El valor predeterminado es sobrestimar mediante un estado de permiso no restringido en el que no se pueden determinar los valores de los permisos.

-Out fileName

Dirige el resultado a fileName. El valor predeterminado es assemblyName.PermCalc .xml o sandbox.PermCalc.xml si se especifica la opción -Sandbox.

-Sandbox

Informa del cajón de arena de permisos mínimo en el que se puede ejecutar una aplicación en lugar de los permisos requeridos por los llamadores del punto de entrada.

-Show

Muestra el archivo de resultados cuando ha finalizado.

-Stacks

Incluye las pilas de llamadas en el resultado para mostrar el origen de las demandas de permisos.

-Under

En aquellos casos donde no se pueden determinar los valores de permiso exactos, intenta subestimar los permisos. El valor predeterminado es sobrestimar cuando no se pueden determinar los valores de permiso.

-?

Muestra información de uso.

Argumento

Descripción

assemblyName

El ensamblado para el que se calculan los permisos.

assemblyDependencyName

Un ensamblado del que depende assemblyName.

Comentarios

La herramienta Minimum Grant Set Determination calcula el conjunto de permisos mínimos necesarios para ejecutar una aplicación examinando todas las rutas de código aplicables de todos los ensamblados de la aplicación y ensamblados de dependencias. La herramienta devuelve un conjunto de permisos por ensamblado de aplicación.

Comenzando en el punto de entrada de la aplicación, la herramienta realiza el seguimiento de todas las rutas de código a través de todos los ensamblados de aplicación así como de las bibliotecas del sistema y compartidas llamadas desde la aplicación. La herramienta mantiene una pila de llamadas simulada que contiene todos los ensamblados involucrados en el seguimiento de la ruta de código. En cada seguimiento de ruta de código, la herramienta comprueba la presencia de demandas declarativas, peticiones de vínculo y los modificadores de recorrido de pila declarativos. Como todos los estados de permisos utilizados en acciones de seguridad declarativas deben conocerse en tiempo de compilación, los efectos de todas las acciones de seguridad declarativas en los ensamblados de aplicación pueden calcularse exactamente. Por ejemplo, si se utiliza una demanda declarativa, el conjunto de permisos mínimo concedido para cada ensamblado en la pila de llamadas en ese punto se actualiza con el conjunto de pedidos demandado. Si se encuentra una aserción declarativa en la pila de llamadas simulada, sólo se actualiza la intersección entre el conjunto de permisos declarados y el conjunto de permisos demandados para todos los ensamblados que se encuentren sobre la aserción en la pila de llamadas. De igual forma, si se encuentra una demanda de vínculo, sólo se actualiza el llamador de la pila de llamadas simulada sobre el punto de la demanda de vínculos con el conjunto de permisos solicitados.

Parte del seguimiento de la ruta de código es un seguimiento a través del lenguaje intermedio de Microsoft (MSIL) de cada método, comenzando con el método de punto de entrada de la aplicación. Si se encuentran las acciones del conjunto de permisos imperativos en el método de seguimiento de MSIL, se ejecuta entonces el algoritmo de actualización siguiente para cada ensamblado:

  • Si el estado de permisos utilizado en la demanda imperativa, demanda de vínculo, aserción, sólo permiso o negación se puede determinar estáticamente, y es seguro que no dependerá de ningún estado disponible en tiempo de ejecución, el efecto en este caso de esta acción de seguridad en los ensamblados de la aplicación se puede determinar y calcular para los efectos de las acciones de seguridad declarativas en el conjunto mínimo de permisos concedidos de todos los ensamblados cuyo perfil se haya generado.

  • Si el estado del conjunto de permisos utilizado en una acción de seguridad imperativa no se puede determinar estáticamente, en este caso se supone el estado no restringido del permiso, por ejemplo, un permiso de seguridad no restringido o permisos de lectura de E/S de archivos no restringidos. En algunas instancias, esto puede conducir a una sobrestimación de los permisos requeridos para que una aplicación se pueda ejecutar. Utilice la opción -Under para reemplazar este comportamiento predeterminado.

  • Si hay varias rutas de código a través de un método y algunas tienen diferentes notaciones de acciones de seguridad, en este caso se utiliza la unión de las demandas y la intersección de las aserciones, porque es posible que la herramienta no pueda determinar cuáles de las posibles rutas de código a través de un método tomará la aplicación en tiempo de ejecución.

Dependiendo del tamaño y complejidad de los ensamblados y sus dependencias, la herramienta podría tardar varios minutos en realizar un análisis en profundidad.

Ejemplos

Puede ejecutar los ejemplos siguientes escribiendo los comandos en la ventana Símbolo del sistema de SDK, sustituyendo los nombres de archivo por lo de los ejemplos.

El comando siguiente reconstruye todos los archivos de la caché e incluye las pilas de llamadas para el ensamblado mylib.dll. Muestra el resultado en el visor predeterminado para los archivos XML.

Permcalc.exe -cleancache -stacks -show mylib.dll

El comando siguiente crea un informe del cajón de arena mínimo de permisos que la aplicación myapp.exe necesita ejecutar. Muestra el resultado en el visor predeterminado para los archivos XML. El archivo de destino es myapp.exe y los archivos dependientes son mydep1.dll y mydep2.dll.

Permcalc.exe -sandbox -show myapp.exe mydep1.dll mydep2.dll

Vea también

Referencia

Herramientas de .NET Framework

Símbolo del sistema de SDK