RSACryptoServiceProvider.UseMachineKeyStore Property (System.Security.Cryptography) (2024)

Table of Contents
Examples Remarks Applies to See also
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

Property Value

true if the key should be persisted in the computer key store; otherwise, false.

Examples

The following code example creates an RSACryptoServiceProvider object and sets the static UseMachineKeyStore property to use the machine key store instead of the user profile key store.

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.CryptographyPublic 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 SubEnd Class

Remarks

Setting this property to true is equivalent to passing the UseMachineKeyStore flag to a CspParameters object. The UseMachineKeyStore property applies to all code in the current application domain, whereas the CspParameters object applies only to classes that explicitly reference it. These settings are useful when impersonating or running under an account whose user profile is not loaded. Setting UseMachineKeyStore affects the key store location only if RSACryptoServiceProvider is initialized with no parameters.

Applies to

See also

RSACryptoServiceProvider.UseMachineKeyStore Property (System.Security.Cryptography) (2024)
Top Articles
Latest Posts
Article information

Author: Madonna Wisozk

Last Updated:

Views: 6067

Rating: 4.8 / 5 (48 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Madonna Wisozk

Birthday: 2001-02-23

Address: 656 Gerhold Summit, Sidneyberg, FL 78179-2512

Phone: +6742282696652

Job: Customer Banking Liaison

Hobby: Flower arranging, Yo-yoing, Tai chi, Rowing, Macrame, Urban exploration, Knife making

Introduction: My name is Madonna Wisozk, I am a attractive, healthy, thoughtful, faithful, open, vivacious, zany person who loves writing and wants to share my knowledge and understanding with you.