Enumerar los nombres de los contenedores del nombre fuerte CSP

Estoy tratando de encontrar información sobre cómo (si es posible) enumerar todos los nombres de los contenedores en el CSP (proveedor de servicios criptográficos) de nombre seguro.

Esencialmente, cuando escribessn.exe -i key.snk MyContainerName, los pares de claves pública y privada se almacenan en lo que se llama un "contenedor". Más adelante, dentro de su código, puede especificar el nombre del contenedor en elAssemblyKeyNameAttribute, p.ej.:

[assembly: AssemblyKeyName("MyContainerName")]

Esto hará que el ensamblado se firme en tiempo de compilación.

Estoy tratando de averiguar si es posible enumerar de alguna manera todos los nombres de los contenedores. Estoy escribiendo unplugin para ReSharper que proporciona la terminación de código para elInternalsVisibleTo atributo. También me gustaría proporcionar la terminación del código para elAssemblyKeyName atributo, donde yo pre-poblaría la lista con nombres de contenedores conocidos.

¿Es esta información accesible?

EDITAR: De un comentario enesta pregunta En IT Security StackExchange, hay un enlace a una pequeña utilidad llamadaKeyPal. Ejecutando esta utilidad conLM Volcará el almacén de claves de la máquina local:

--------- KeyPal:  MACHINE store: 3 keycontainers ---------
[0] VS_KEY_F726FDF898BC4CB8
     Signature 1024
[1] IIS Express Development Certificate Container
     Exchange  1024
     CertE: CN=localhost
[2] MyContainerName
     Signature 1024
-------------------------------------------------

Donde puedo ver que tanto [0] como [2] son ​​nombres de contenedores válidos para usar conAssemblyKeyName. Sin embargo, está el [1] uno, "IIS Express ...", que no es un contenedor válido. ¿Cómo distingo entre ellos?

Respuestas a la pregunta(1)

Su respuesta a la pregunta