RSACryptoServiceProvider.UseMachineKeyStore Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví hodnotu označující, zda má být klíč trvale uložen v úložišti klíčů počítače místo v úložišti profilu uživatele.
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
Hodnota vlastnosti
true
pokud má být klíč trvale uložen v úložišti klíčů počítače; v opačném případě . false
Příklady
Následující příklad kódu vytvoří RSACryptoServiceProvider objekt a nastaví statickou UseMachineKeyStore vlastnost tak, aby místo úložiště klíčů profilu uživatele používala úložiště klíčů počítače.
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
Poznámky
Nastavení této vlastnosti na true
je ekvivalentem předání příznaku UseMachineKeyStore objektu CspParameters . Vlastnost UseMachineKeyStore se vztahuje na veškerý kód v aktuální doméně aplikace, zatímco CspParameters objekt se vztahuje pouze na třídy, které na něj explicitně odkazují. Tato nastavení jsou užitečná při zosobnění nebo spuštění pod účtem, jehož profil uživatele není načten. Nastavení UseMachineKeyStore ovlivňuje umístění úložiště klíčů pouze v případě, že RSACryptoServiceProvider je inicializováno bez parametrů.