创建 RSACryptoServiceProvider 时出错 "Keyset does not exist"

Error "Keyset does not exist" from creating a RSACryptoServiceProvider

我的代码

csp = new RSACryptoServiceProvider(cspParms); 

导致错误:“键集不存在”。

string keyContainerName = "abcd";
CspParameters cspParms = new CspParameters(24, "Microsoft Enhanced RSA and AES Cryptographic Provider", keyContainerName);
cspParms.Flags = CspProviderFlags.UseExistingKey | CspProviderFlags.UseMachineKeyStore;
            

RSACryptoServiceProvider csp = null;
csp = new RSACryptoServiceProvider(cspParms);

csp = new RSACryptoServiceProvider(cspParms); 

导致错误:“对象已存在”。

然后我在调用之前添加了以下三行

csp = new RSACryptoServiceProvider(cspParms);

CryptoKeyAccessRule rule = new CryptoKeyAccessRule("everyone", CryptoKeyRights.FullControl, AccessControlType.Allow);
cspParms.CryptoKeySecurity = new CryptoKeySecurity();
cspParms.CryptoKeySecurity.SetAccessRule(rule);

然后我收到错误:“键集不存在”。

即使我删除了添加的三行,我仍然得到错误:密钥集不存在。

找到原因了

如果我 运行 作为管理员,则不会出现这些错误。

我使用的是 windows 10,我让每个人都可以 read/write 我的用户文件夹。但是最近我的 windows 被自动升级到 win 11。用户的安全设置发生了变化,这引起了麻烦。