RSACryptoServiceProvider::UseMachineKeyStore Property
Gets or sets a value indicating whether the key should be persisted in the computer's key store instead of the user profile store.
Assembly: mscorlib (in mscorlib.dll)
public: property bool UseMachineKeyStore { static bool get(); static void set(bool value); }
Property Value
Type: System::Booleantrue if the key should be persisted in the computer key store; otherwise, false.
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.
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(); }
Available since 1.1
Windows Phone Silverlight
Available since 7.1