Freigeben über


RSACryptoServiceProvider.UseMachineKeyStore-Eigenschaft

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

Namespace: System.Security.Cryptography
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public Shared Property UseMachineKeyStore As Boolean
'Usage
Dim value As Boolean

value = RSACryptoServiceProvider.UseMachineKeyStore

RSACryptoServiceProvider.UseMachineKeyStore = value
public static bool UseMachineKeyStore { get; set; }
public:
static property bool UseMachineKeyStore {
    bool get ();
    void set (bool value);
}
/** @property */
public static boolean get_UseMachineKeyStore ()

/** @property */
public static void set_UseMachineKeyStore (boolean value)
public static function get UseMachineKeyStore () : boolean

public static function set UseMachineKeyStore (value : boolean)

Eigenschaftenwert

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

Hinweise

Diese Eigenschaft auf True festzulegen entspricht dem Übergeben des UseMachineKeyStore-Flags an ein CspParameters-Objekt. Die UseMachineKeyStore-Eigenschaft wird auf den gesamten Code in der aktuellen Anwendungsdomäne angewendet, während das CspParameters-Objekt nur auf Klassen angewendet wird, die explizit darauf verweisen. Diese Einstellungen bieten sich bei einem Identitätswechsel an oder bei der Ausführung unter einem Konto, dessen Benutzerprofil nicht geladen ist.

Beispiel

Im folgenden Codebeispiel wird ein RSACryptoServiceProvider-Objekt erstellt, und die statische UseMachineKeyStore-Eigenschaft wird festgelegt, damit anstelle des Schlüsselspeichers des Benutzerprofils der Schlüsselspeicher des Computers verwendet wird.

Imports System.Security.Cryptography

Module RSACSPExample

    Sub Main()

        Dim KeyContainerName As String = "MyKeyContainer"

        'Set the static UseMachineKeyStore property to
        'use the machine key store instead of the user
        'profile key store.  All code in the current 
        'application domain will use this setting.
        RSACryptoServiceProvider.UseMachineKeyStore = True

        'Create a new key and persist it in 
        'the key container.  
        RSAPersistKeyInCSP(KeyContainerName)

        'Delete the key from the key container.
        RSADeleteKeyInCSP(KeyContainerName)
    End Sub


    Sub RSAPersistKeyInCSP(ByVal ContainerName As String)
        Try
            ' Create a new instance of CspParameters.  Pass
            ' 13 to specify a RSA container or 1 to specify
            ' an RSA container.  The default is 1.
            Dim cspParams As New CspParameters

            ' Specify the container name using the passed variable.
            cspParams.KeyContainerName = ContainerName

            'Create a new instance of RSACryptoServiceProvider to generate
            'a new key pair.  Pass the CspParameters class to persist the 
            'key in the container.  The PersistKeyInCsp property is True by 
            'default, allowing the key to be persisted. 
            Dim RSAalg As New RSACryptoServiceProvider(cspParams)

            'Indicate that the key was persisted.
            Console.WriteLine("The RSA key was persisted in the container, ""{0}"".", ContainerName)
        Catch e As CryptographicException
            Console.WriteLine(e.Message)
        End Try
    End Sub


    Sub RSADeleteKeyInCSP(ByVal ContainerName As String)
        Try
            ' Create a new instance of CspParameters.  Pass
            ' 13 to specify a RSA container or 1 to specify
            ' an RSA container.  The default is 1.
            Dim cspParams As New CspParameters

            ' Specify the container name using the passed variable.
            cspParams.KeyContainerName = ContainerName

            'Create a new instance of RSACryptoServiceProvider. 
            'Pass the CspParameters class to use the 
            'key in the container.
            Dim RSAalg As New RSACryptoServiceProvider(cspParams)

            'Explicitly set the PersistKeyInCsp property to False
            'to delete the key entry in the container.
            RSAalg.PersistKeyInCsp = False

            'Call Clear to release resources and delete the key from the container.
            RSAalg.Clear()

            'Indicate that the key was persisted.
            Console.WriteLine("The RSA key was deleted from the container, ""{0}"".", ContainerName)
        Catch e As CryptographicException
            Console.WriteLine(e.Message)
        End Try
    End Sub

End Module
using System;
using System.Security.Cryptography;

class RSACSPSample
{

    static void Main()
    {

        string KeyContainerName = "MyKeyContainer";

        //Set the static UseMachineKeyStore property to
        //use the machine key store instead of the user
        //profile key store.  All code in the current 
        //application domain will use this setting.
        RSACryptoServiceProvider.UseMachineKeyStore = true;

        //Create a new key and persist it in 
        //the key container.  
        RSAPersistKeyInCSP(KeyContainerName);

        //Delete the key from the key container.
        RSADeleteKeyInCSP(KeyContainerName);
    }

    public static void RSAPersistKeyInCSP(string ContainerName)
    {
        try
        {
            // Create a new instance of CspParameters.  Pass
            // 13 to specify a RSA container or 1 to specify
            // an RSA container.  The default is 1.
            CspParameters cspParams = new CspParameters();

            // Specify the container name using the passed variable.
            cspParams.KeyContainerName = ContainerName;

            //Create a new instance of RSACryptoServiceProvider to generate
            //a new key pair.  Pass the CspParameters class to persist the 
            //key in the container.  The PersistKeyInCsp property is true by 
            //default, allowing the key to be persisted. 
            RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(cspParams);

          

            //Indicate that the key was persisted.
            Console.WriteLine("The RSA key was persisted in the container, \"{0}\".", ContainerName);
        }
        catch(CryptographicException e)
        {
            Console.WriteLine(e.Message);

        }
    }

    public static void RSADeleteKeyInCSP(string ContainerName)
    {
        try
        {
            // Create a new instance of CspParameters.  Pass
            // 13 to specify a RSA container or 1 to specify
            // an RSA container.  The default is 1.
            CspParameters cspParams = new CspParameters();

            // Specify the container name using the passed variable.
            cspParams.KeyContainerName = ContainerName;

            //Create a new instance of RSACryptoServiceProvider. 
            //Pass the CspParameters class to use the 
            //key in the container.
            RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(cspParams);

            //Explicitly set the PersistKeyInCsp property to false
            //to delete the key entry in the container.
            RSAalg.PersistKeyInCsp = false;

            //Call Clear to release resources and delete the key from the container.
            RSAalg.Clear();

            //Indicate that the key was persisted.
            Console.WriteLine("The RSA key was deleted from the container, \"{0}\".", ContainerName);
        }
        catch(CryptographicException e)
        {
            Console.WriteLine(e.Message);

        }
    }
}
using namespace System;
using namespace System::Security::Cryptography;
void RSAPersistKeyInCSP( String^ ContainerName )
{
   try
   {
      
      // Create a new instance of CspParameters.  Pass
      // 13 to specify a RSA container or 1 to specify
      // an RSA container.  The default is 1.
      CspParameters^ cspParams = gcnew CspParameters;
      
      // Specify the container name using the passed variable.
      cspParams->KeyContainerName = ContainerName;
      
      //Create a new instance of RSACryptoServiceProvider to generate
      //a new key pair.  Pass the CspParameters class to persist the 
      //key in the container.  The PersistKeyInCsp property is true by 
      //default, allowing the key to be persisted. 
      RSACryptoServiceProvider^ RSAalg = gcnew RSACryptoServiceProvider( cspParams );
      
      //Indicate that the key was persisted.
      Console::WriteLine( "The RSA key was persisted in the container, \"{0}\".", ContainerName );
   }
   catch ( CryptographicException^ e ) 
   {
      Console::WriteLine( e->Message );
   }

}

void RSADeleteKeyInCSP( String^ ContainerName )
{
   try
   {
      
      // Create a new instance of CspParameters.  Pass
      // 13 to specify a RSA container or 1 to specify
      // an RSA container.  The default is 1.
      CspParameters^ cspParams = gcnew CspParameters;
      
      // Specify the container name using the passed variable.
      cspParams->KeyContainerName = ContainerName;
      
      //Create a new instance of RSACryptoServiceProvider. 
      //Pass the CspParameters class to use the 
      //key in the container.
      RSACryptoServiceProvider^ RSAalg = gcnew RSACryptoServiceProvider( cspParams );
      
      //Explicitly set the PersistKeyInCsp property to false
      //to delete the key entry in the container.
      RSAalg->PersistKeyInCsp = false;
      
      //Call Clear to release resources and delete the key from the container.
      RSAalg->Clear();
      
      //Indicate that the key was persisted.
      Console::WriteLine( "The RSA key was deleted from the container, \"{0}\".", ContainerName );
   }
   catch ( CryptographicException^ e ) 
   {
      Console::WriteLine( e->Message );
   }

}

int main()
{
   String^ KeyContainerName = "MyKeyContainer";
   
   //Set the static UseMachineKeyStore property to
   //use the machine key store instead of the user
   //profile key store.  All code in the current 
   //application domain will use this setting.
   RSACryptoServiceProvider::UseMachineKeyStore = true;
   
   //Create a new key and persist it in 
   //the key container.  
   RSAPersistKeyInCSP( KeyContainerName );
   
   //Delete the key from the key container.
   RSADeleteKeyInCSP( KeyContainerName );
}
import System.*;
import System.Security.Cryptography.*;

class RSACSPSample
{
    public static void main(String args[])
    {
        String keyContainerName = "MyKeyContainer";
        //Set the static UseMachineKeyStore property to
        //use the machine key store instead of the user
        //profile key store.  All code in the current 
        //application domain will use this setting.
        RSACryptoServiceProvider.set_UseMachineKeyStore(true);
        //Create a new key and persist it in 
        //the key container.  
        RSAPersistKeyInCSP(keyContainerName);
        //Delete the key from the key container.
        RSADeleteKeyInCSP(keyContainerName);
    } //main

    public static void RSAPersistKeyInCSP(String containerName)
    {
        try {
            // Create a new instance of CspParameters.  Pass
            // 13 to specify a RSA container or 1 to specify
            // an RSA container.  The default is 1.
            CspParameters cspParams = new CspParameters();
            // Specify the container name using the passed variable.
            cspParams.KeyContainerName = containerName;
            //Create a new instance of RSACryptoServiceProvider to generate
            //a new key pair.  Pass the CspParameters class to persist the 
            //key in the container.  The PersistKeyInCsp property is true by 
            //default, allowing the key to be persisted. 
            RSACryptoServiceProvider rsaAlg = new RSACryptoServiceProvider(
                cspParams);
            //Indicate that the key was persisted.
            Console.WriteLine("The RSA key was persisted in the container, " 
                + "\"{0}\".", containerName);
        }
        catch (CryptographicException e) {
            Console.WriteLine(e.get_Message());
        }
    } //RSAPersistKeyInCSP

    public static void RSADeleteKeyInCSP(String containerName)
    {
        try {
            // Create a new instance of CspParameters.  Pass
            // 13 to specify a RSA container or 1 to specify
            // an RSA container.  The default is 1.
            CspParameters cspParams = new CspParameters();
            // Specify the container name using the passed variable.
            cspParams.KeyContainerName = containerName;
            //Create a new instance of RSACryptoServiceProvider. 
            //Pass the CspParameters class to use the 
            //key in the container.
            RSACryptoServiceProvider rsaAlg = 
                new RSACryptoServiceProvider(cspParams);
            //Explicitly set the PersistKeyInCsp property to false
            //to delete the key entry in the container.
            rsaAlg.set_PersistKeyInCsp(false);
            //Call Clear to release resources and delete the key from the 
            // container.
            rsaAlg.Clear();
            //Indicate that the key was persisted.
            Console.WriteLine("The RSA key was deleted from the container, " 
                + "\"{0}\".", containerName);
        }
        catch (CryptographicException e) {
            Console.WriteLine(e.get_Message());
        }
    } //RSADeleteKeyInCSP
} //RSACSPSample

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1

.NET Compact Framework

Unterstützt in: 2.0

Siehe auch

Referenz

RSACryptoServiceProvider-Klasse
RSACryptoServiceProvider-Member
System.Security.Cryptography-Namespace

Weitere Ressourcen

Kryptografische Dienste