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 키 저장소 위치에 영향을 줍니다.
적용 대상
추가 정보
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET