如何让SignerSignEx2使用机器密钥存储区而不是用户密钥存储区?

时间:2016-09-13 15:45:00

标签: c# signing authenticode

我目前正在尝试使用SignerSignEx2函数使用Authenticode对DLL进行签名。为此,我创建了一个私钥并将其放入机器密钥存储区(因此该文件将存储在 C:\ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys 中)。

不幸的是,似乎SignerSignEx2函数只查找用户存储中的密钥(当我将密钥放入用户存储区时(以便将文件存储在 C:\ Users {user} \ AppData \ Roaming中) \ Microsoft \ Crypto \ RSA {user-id} )它工作正常。)

有没有人知道如何以一种使用机器密钥存储而不是用户存储的方式调用SignerSignEx2?

本质上,该功能应该类似于CspParameters类,它允许使用CspProviderFlags.UseMachineKeyStore来控制使用哪个密钥库。

1 个答案:

答案 0 :(得分:0)

我认为在打开证书存储区时需要CERT_SYSTEM_STORE_LOCAL_MACHINE标志才能获得所需内容。