Asp.net web api 在WebApi中使用FindPrivateKey

Asp.net web api 在WebApi中使用FindPrivateKey,asp.net-web-api,certificate,Asp.net Web Api,Certificate,我下载了FindPrivateKey.exe的源代码 我使用此exe查找私钥的文件名和文件夹。我必须在机器上本地运行这个。我正在寻找一种方法来获取这些信息远程使用web api FindPrivateKey.exe本身作为控制台应用程序工作 但在我的webapi代码中,它不起作用(CryptAcquireCertificatePrivateKey返回false) 这有明显的原因吗?web api站点启用了AllowAnonymousAccess,这是为什么 我在包含代码片段时遇到问题。总结: 店

我下载了FindPrivateKey.exe的源代码

我使用此exe查找私钥的文件名和文件夹。我必须在机器上本地运行这个。我正在寻找一种方法来获取这些信息远程使用web api

FindPrivateKey.exe本身作为控制台应用程序工作

但在我的webapi代码中,它不起作用(CryptAcquireCertificatePrivateKey返回false)

这有明显的原因吗?web api站点启用了AllowAnonymousAccess,这是为什么

我在包含代码片段时遇到问题。总结: 店名是“我的” 存储位置为“本地计算机”


我能够通过首先模拟一个拥有私钥信息权限的用户来实现这一点。对于任何感兴趣的人,请谷歌下载下面的DllImport代码,了解如何做到这一点

    [DllImport("advapi32.dll", CharSet = CharSet.Auto)]
    public static extern int LogonUser(
        string lpszUserName,
        String lpszDomain,
        String lpszPassword,
        int dwLogonType,
        int dwLogonProvider,
        ref IntPtr phToken);

    [DllImport("advapi32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)]
    public extern static int DuplicateToken(
        IntPtr hToken,
        int impersonationLevel,
        ref IntPtr hNewToken);
    [DllImport("advapi32.dll", CharSet = CharSet.Auto)]
    public static extern int LogonUser(
        string lpszUserName,
        String lpszDomain,
        String lpszPassword,
        int dwLogonType,
        int dwLogonProvider,
        ref IntPtr phToken);

    [DllImport("advapi32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)]
    public extern static int DuplicateToken(
        IntPtr hToken,
        int impersonationLevel,
        ref IntPtr hNewToken);