Das Installieren eines Zertifikats in einer benutzerdefinierten MSI-Aktion funktioniert nicht ordnungsgemäß

Ich versuche, ein Zertifikat im lokalen Computerspeicher in einer benutzerdefinierten Aktion zu installieren. Das Zertifikat ist installiert, aber wenn ich es zum Abfragen von AWS verwende, wird folgende Fehlermeldung angezeigt:

Objekt enthält nur die öffentliche Hälfte eines Schlüsselpaares. Ein privater Schlüssel muss ebenfalls bereitgestellt werden.

Das Installationsprogramm wird ausgeführterhöhtist das Ziel Windows Vista.

Wenn ich eine separate EXE-Datei verwende, um dasselbe Zertifikat mit demselben Code zu installieren, funktioniert dies. Worin unterscheiden sich die Unterschiede bei der Installation eines Zertifikats mit dem Windows Installer?

Der Code:

private void InstallCertificate(string certificatePath, string certificatePassword)
{
  if (IsAdmin())
  {
    try
    {
      X509Certificate2 cert = new X509Certificate2(certificatePath, certificatePassword,
        X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);

      X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
      store.Open(OpenFlags.ReadWrite);
      store.Add(cert);
      store.Close();
    }
    catch (Exception ex)
    {
      throw new DataException("Certificate appeared to load successfully but also seems to be null.", ex);
    }
  }
  else
  {
    throw new Exception("Not enough priviliges to install certificate");
  }
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage