使用aspnet_regiis工具加密web.config时,密钥conatiner存储在 C:\ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys 的MachineKeys文件夹中。
如何检查具有特定名称的密钥容器是否已存在?那是 配置是否第一次成功加密?
显然我试过
public static bool DoesKeyExists(string containerName)
{
var cspParams = new CspParameters
{
Flags = CspProviderFlags.UseExistingKey,
KeyContainerName = containerName
};
try
{
var provider = new RSACryptoServiceProvider(cspParams);
}
catch (Exception e)
{
return false;
}
return true;
}
并且对方法的调用就像
if (!DoesKeyExists("MyKeys"))
{
p.StandardInput.WriteLine("aspnet_regiis.exe -pc \"MyKeys\" -exp");
p.StandardInput.WriteLine("aspnet_regiis.exe -pa \"MyKeys\" \"NT AUTHORITY\\NETWORK SERVICE\"");
p.StandardInput.WriteLine("aspnet_regiis.exe -pa \"MyKeys\" \"IIS APPPOOL\\ApplicationPoolName\"");
p.StandardInput.WriteLine("aspnet_regiis -pef \"connectionStrings\" {0} -prov \"RSAProtectedConfigurationProvider\"", strEntry);
p.StandardInput.WriteLine("aspnet_regiis -px \"MyKeys\" {0} -pri", KeyFileName);
}
但即使在第一次运行时创建密钥容器本身也是如此 它说 密钥集不存在并抛出错误,然后为后续运行返回false。
应该做什么?