为什么我从ImportPfxDataAsync获取UnauthorisedAccessException?

时间:2013-01-30 11:51:35

标签: c# windows-runtime certificate

我正在尝试将X.509证书导入我的WinRT应用程序。证书是通过从Windows中的证书管理器以PXCS#12格式导出证书及其私钥生成的。

我正在使用FileOpenPicker来选择文件。为了便于测试,我已将证书的密码硬编码到我的方法中:

private async void LoadCertificateAsync()
{
    var picker = new FileOpenPicker();

    picker.SuggestedStartLocation = PickerLocationId.Desktop;
    picker.FileTypeFilter.Add(".pfx");
    picker.ViewMode = PickerViewMode.List;

    var file = await picker.PickSingleFileAsync();
    var buffer = await FileIO.ReadBufferAsync(file);

    string certificateData = CryptographicBuffer.EncodeToBase64String(buffer);

    string password = "47679005-c8b8-47b5-b54c-277b12854973";

    await CertificateEnrollmentManager.ImportPfxDataAsync(
            certificateData,
            password,
            ExportOption.NotExportable,
            KeyProtectionLevel.NoConsent,
            InstallOptions.None,
            "Client Certificate");
}

代码最后会调用ImportPfxDataAsync,此时我会收到UnauthorisedAccessException,如下所示:

  

“System.UnauthorizedAccessException”类型的未处理异常   发生在mscorlib.dll

     

WinRT信息:_InstallResponse

     

其他信息:访问被拒绝。 (HRESULT的例外情况:   0x80070005(E_ACCESSDENIED))

我正在尝试上传的证书位于我的SkyDrive here上。

我找不到任何文档来解释为什么我可能会收到此错误,也没有建议我需要做什么来解决它,无论是导出的证书中的错误,应用程序的配置还是环境。< / p>

1 个答案:

答案 0 :(得分:1)

我的代码中出现了同样的错误。 我的解决方案是检查 Package.appxmanifest

共享用户证书企业身份验证的功能