RSACryptoServiceProvider.UseMachineKeyStore プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
キーをユーザー プロファイル ストアではなくコンピューターのキー ストア内で永続化するかどうかを示す値を取得または設定します。
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
プロパティ値
キーをコンピューター キー ストア内で永続化する場合、true
。それ以外の場合、false
。
例
次のコード例では、 オブジェクトを RSACryptoServiceProvider 作成し、ユーザー プロファイル キー ストアではなくマシン キー ストアを使用するように静的 UseMachineKeyStore プロパティを設定します。
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
注釈
このプロパティを に true
設定することは、 フラグを オブジェクトに UseMachineKeyStore 渡すことと CspParameters 同じです。 プロパティは UseMachineKeyStore 現在のアプリケーション ドメイン内のすべてのコードに適用されますが CspParameters 、オブジェクトは明示的に参照するクラスにのみ適用されます。 これらの設定は、ユーザー プロファイルが読み込まれていないアカウントで偽装または実行する場合に便利です。 を設定 UseMachineKeyStore すると、パラメーターなしでが初期化されている場合 RSACryptoServiceProvider にのみ、キー ストアの場所に影響します。
適用対象
こちらもご覧ください
.NET