Teilen über


RSACryptoServiceProvider.UseMachineKeyStore Eigenschaft

Definition

Ruft einen Wert ab, der angibt, ob der Schlüssel statt im Benutzerprofilspeicher im Schlüsselspeicher des Computers beibehalten werden soll, oder legt diesen Wert fest.

public:
 static property bool UseMachineKeyStore { bool get(); void set(bool value); };
public static bool UseMachineKeyStore { get; set; }
static member UseMachineKeyStore : bool with get, set
Public Shared Property UseMachineKeyStore As Boolean

Eigenschaftswert

true, wenn der Schlüssel im Schlüsselspeicher des Computers beibehalten werden soll, andernfalls false.

Beispiele

Im folgenden Codebeispiel wird ein RSACryptoServiceProvider -Objekt erstellt und die statische UseMachineKeyStore Eigenschaft so festgelegt, dass der Computerschlüsselspeicher anstelle des Benutzerprofilschlüsselspeichers verwendet wird.

using namespace System;
using namespace System::Security::Cryptography;

ref class RSAKeyStoreSample
{
public:
    static void Main()
    {
        // Set the static UseMachineKeyStore property to use the machine key
        // store instead of the user profile key store. All CSP instances not
        // initialized with CspParameters will use this setting.
        RSACryptoServiceProvider::UseMachineKeyStore = true;
        try
        {
            RSACryptoServiceProvider^ RSAalg;

            // This CSP instance will use the Machine Store as set above and is
            // initialized with no parameters.
            RSAalg = gcnew RSACryptoServiceProvider();
            ShowContainerInfo(RSAalg->CspKeyContainerInfo);
            RSAalg->PersistKeyInCsp = false;
            delete RSAalg;

            CspParameters^ cspParams = gcnew CspParameters();

            cspParams->KeyContainerName = "MyKeyContainer";

            // This CSP instance will use the User Store since cspParams are used.
            RSAalg = gcnew RSACryptoServiceProvider(cspParams);
            ShowContainerInfo(RSAalg->CspKeyContainerInfo);
            RSAalg->PersistKeyInCsp = false;
            delete RSAalg;

            cspParams->Flags |= CspProviderFlags::UseMachineKeyStore;

            // This CSP instance will use the Machine Store. Although cspParams are used,
            // the cspParams.Flags is set to CspProviderFlags.UseMachineKeyStore.
            RSAalg = gcnew RSACryptoServiceProvider(cspParams);
            ShowContainerInfo(RSAalg->CspKeyContainerInfo);
            RSAalg->PersistKeyInCsp = false;
            delete RSAalg;
        }
        catch (CryptographicException^ e)
        {
            Console::WriteLine("Exception: {0}", e->GetType()->FullName);
            Console::WriteLine(e->Message);
        }
    }

    static void ShowContainerInfo(CspKeyContainerInfo^ containerInfo)
    {
        String^ keyStore;

        Console::WriteLine();
        if (containerInfo->MachineKeyStore)
        {
            keyStore = "Machine Store";
        }
        else
        {
            keyStore = "User Store";
        }
        Console::WriteLine("Key Store:     {0}", keyStore);
        Console::WriteLine("Key Provider:  {0}", containerInfo->ProviderName);
        Console::WriteLine("Key Container: \"{0}\"", containerInfo->KeyContainerName);
        Console::WriteLine("Generated:     {0}", containerInfo->RandomlyGenerated);
        Console::WriteLine("Key Nubmer:    {0}", containerInfo->KeyNumber);
        Console::WriteLine("Removable Key: {0}", containerInfo->Removable);
    }
};

int main()
{
    RSAKeyStoreSample::Main();
}
using System;
using System.Security.Cryptography;

public class RSAKeyStoreSample
{
    public static void Main()
    {
        // Set the static UseMachineKeyStore property to use the machine key
        // store instead of the user profile key store. All CSP instances not
        // initialized with CspParameters will use this setting.
        RSACryptoServiceProvider.UseMachineKeyStore = true;
        try
        {
            // This CSP instance will use the Machine Store as set above and is
            // initialized with no parameters.
            using (RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider())
            {
                ShowContainerInfo(RSAalg.CspKeyContainerInfo);
                RSAalg.PersistKeyInCsp = false;
            }

            CspParameters cspParams = new CspParameters();

            cspParams.KeyContainerName = "MyKeyContainer";

            // This CSP instance will use the User Store since cspParams are used.
            using (RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(cspParams))
            {
                ShowContainerInfo(RSAalg.CspKeyContainerInfo);
                RSAalg.PersistKeyInCsp = false;
            }

            cspParams.Flags |= CspProviderFlags.UseMachineKeyStore;

            // This CSP instance will use the Machine Store. Although cspParams are used,
            // the cspParams.Flags is set to CspProviderFlags.UseMachineKeyStore.
            using (RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(cspParams))
            {
                ShowContainerInfo(RSAalg.CspKeyContainerInfo);
                RSAalg.PersistKeyInCsp = false;
            }
        }
        catch (CryptographicException e)
        {
            Console.WriteLine("Exception: {0}", e.GetType().FullName);
            Console.WriteLine(e.Message);
        }
    }

    public static void ShowContainerInfo(CspKeyContainerInfo containerInfo)
    {
        string keyStore;

        Console.WriteLine();
        if (containerInfo.MachineKeyStore)
        {
            keyStore = "Machine Store";
        }
        else
        {
            keyStore = "User Store";
        }
        Console.WriteLine("Key Store:     {0}", keyStore);
        Console.WriteLine("Key Provider:  {0}", containerInfo.ProviderName);
        Console.WriteLine("Key Container: \"{0}\"", containerInfo.KeyContainerName);
        Console.WriteLine("Generated:     {0}", containerInfo.RandomlyGenerated);
        Console.WriteLine("Key Nubmer:    {0}", containerInfo.KeyNumber);
        Console.WriteLine("Removable Key: {0}", containerInfo.Removable);
    }
}
Imports System.Security.Cryptography

Public Class RSAKeyStoreSample
    Public Shared Sub Main()
        ' Set the static UseMachineKeyStore property to use the machine key
        ' store instead of the user profile key store. All CSP instances not
        ' initialized with CspParameters will use this setting.
        RSACryptoServiceProvider.UseMachineKeyStore = True
        Try
            ' This CSP instance will use the Machine Store as set above and is
            ' initialized with no parameters.
            Using RSAalg As New RSACryptoServiceProvider()
                ShowContainerInfo(RSAalg.CspKeyContainerInfo)
                RSAalg.PersistKeyInCsp = False
            End Using

            Dim cspParams As New CspParameters()

            cspParams.KeyContainerName = "MyKeyContainer"

            ' This CSP instance will use the User Store since cspParams are used.
            Using RSAalg As New RSACryptoServiceProvider(cspParams)
                ShowContainerInfo(RSAalg.CspKeyContainerInfo)
                RSAalg.PersistKeyInCsp = False
            End Using

            cspParams.Flags = cspParams.Flags Or CspProviderFlags.UseMachineKeyStore

            ' This CSP instance will use the Machine Store. Although cspParams are used,
            ' the cspParams.Flags is set to CspProviderFlags.UseMachineKeyStore.
            Using RSAalg As New RSACryptoServiceProvider(cspParams)
                ShowContainerInfo(RSAalg.CspKeyContainerInfo)
                RSAalg.PersistKeyInCsp = False
            End Using
        Catch e As CryptographicException
            Console.WriteLine("Exception: {0}", e.GetType().FullName)
            Console.WriteLine(e.Message)

        End Try
    End Sub

    Public Shared Sub ShowContainerInfo(containerInfo As CspKeyContainerInfo)
        Dim keyStore As String

        Console.WriteLine()
        If containerInfo.MachineKeyStore Then
            keyStore = "Machine Store"
        Else
            keyStore = "User Store"
        End If
        Console.WriteLine("Key Store:     {0}", keyStore)
        Console.WriteLine("Key Provider:  {0}", containerInfo.ProviderName)
        Console.WriteLine("Key Container: ""{0}""", containerInfo.KeyContainerName)
        Console.WriteLine("Generated:     {0}", containerInfo.RandomlyGenerated)
        Console.WriteLine("Key Nubmer:    {0}", containerInfo.KeyNumber)
        Console.WriteLine("Removable Key: {0}", containerInfo.Removable)
    End Sub
End Class

Hinweise

Das Festlegen dieser Eigenschaft auf true entspricht dem Übergeben des UseMachineKeyStore Flags an ein CspParameters -Objekt. Die UseMachineKeyStore -Eigenschaft gilt für den gesamten Code in der aktuellen Anwendungsdomäne, während das CspParameters -Objekt nur für Klassen gilt, die explizit darauf verweisen. Diese Einstellungen sind nützlich, wenn Sie die Identität eines Kontos annehmen oder unter einem Konto ausführen, dessen Benutzerprofil nicht geladen wird. Die Einstellung UseMachineKeyStore wirkt sich nur auf den Speicherort des Schlüsselspeichers aus, wenn RSACryptoServiceProvider ohne Parameter initialisiert wird.

Gilt für:

Weitere Informationen