SecureString.MakeReadOnly Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Met en lecture seule la valeur texte de cette chaîne sécurisée.
public:
void MakeReadOnly();
public void MakeReadOnly ();
member this.MakeReadOnly : unit -> unit
Public Sub MakeReadOnly ()
Exceptions
Cette chaîne sécurisée a déjà été supprimée.
Exemples
L’exemple suivant montre comment les AppendChar méthodes et RemoveAt peuvent être utilisées pour collecter les caractères d’un mot de passe. Une fois le mot de passe collecté, il est en lecture seule.
using namespace System;
using namespace System::Security;
void main()
{
bool go = true;
ConsoleKeyInfo cki;
String^ m = L"\nEnter your password (up to 15 letters, numbers, and underscores)\n"
L"Press BACKSPACE to delete the last character entered. " +
L"\nPress Enter when done, or ESCAPE to quit:";
SecureString ^ password = gcnew SecureString;
int top;
int left;
// The Console.TreatControlCAsInput property prevents CTRL+C from
// ending this example.
Console::TreatControlCAsInput = true;
Console::Clear();
Console::WriteLine(m);
top = Console::CursorTop;
left = Console::CursorLeft;
do {
cki = Console::ReadKey(true);
if (cki.Key == ConsoleKey::Escape)
break;
if (cki.Key == ConsoleKey::Backspace){
if (password->Length > 0) {
Console::SetCursorPosition(left + password->Length - 1, top);
Console::Write(' ');
Console::SetCursorPosition(left + password->Length - 1, top);
password->RemoveAt(password->Length - 1);
}
}
else {
if ((password->Length < 15) &&
(Char::IsLetterOrDigit( cki.KeyChar ) ||
cki.KeyChar == '_') ) {
password->AppendChar( cki.KeyChar );
Console::SetCursorPosition( left + password->Length - 1, top );
Console::Write("*");
}
}
} while (cki.Key != ConsoleKey::Enter & password->Length < 15);
// Make the password read-only to prevent modification.
password->MakeReadOnly();
// Dispose of the SecureString instance.
delete password;
}
// The example displays output like the following:
// Enter your password (up to 15 letters, numbers, and underscores)
// Press BACKSPACE to delete the last character entered.
// Press Enter when done, or ESCAPE to quit:
// ************
using System;
using System.Security;
class Example
{
public static void Main()
{
ConsoleKeyInfo cki;
String m = "\nEnter your password (up to 15 letters, numbers, and underscores)\n" +
"Press BACKSPACE to delete the last character entered. " +
"\nPress Enter when done, or ESCAPE to quit:";
SecureString password = new SecureString();
int top, left;
// The Console.TreatControlCAsInput property prevents CTRL+C from
// ending this example.
Console.TreatControlCAsInput = true;
Console.Clear();
Console.WriteLine(m);
top = Console.CursorTop;
left = Console.CursorLeft;
// Read user input from the console. Store up to 15 letter, digit, or underscore
// characters in a SecureString object, or delete a character if the user enters
// a backspace. Display an asterisk (*) on the console to represent each character
// that is stored.
do {
cki = Console.ReadKey(true);
if (cki.Key == ConsoleKey.Escape) break;
if (cki.Key == ConsoleKey.Backspace) {
if (password.Length > 0) {
Console.SetCursorPosition(left + password.Length - 1, top);
Console.Write(' ');
Console.SetCursorPosition(left + password.Length - 1, top);
password.RemoveAt(password.Length-1);
}
}
else {
if ((password.Length < 15) &&
(Char.IsLetterOrDigit(cki.KeyChar) || cki.KeyChar == '_')) {
password.AppendChar(cki.KeyChar);
Console.SetCursorPosition(left+password.Length-1, top);
Console.Write('*');
}
}
} while (cki.Key != ConsoleKey.Enter & password.Length < 15);
// Make the password read-only to prevent modification.
password.MakeReadOnly();
// Dispose of the SecureString instance.
password.Dispose();
}
}
// This example displays output like the following:
// Enter your password (up to 15 letters, numbers, and underscores)
// Press BACKSPACE to delete the last character entered.
// Press Enter when done, or ESCAPE to quit:
// ************
Imports System.Security
Class Example
Public Shared Sub Main()
Dim cki As ConsoleKeyInfo
Dim m As String = vbCrLf & "Enter your password (up to 15 letters, numbers, and underscores)" &
vbCrLf & "Press BACKSPACE to delete the last character entered. " & vbCrLf &
"Press Enter when done, or ESCAPE to quit: "
Dim password As New SecureString()
Dim top, left As Integer
' The Console.TreatControlCAsInput property prevents CTRL+C from
' ending this example.
Console.TreatControlCAsInput = True
Console.Clear()
Console.WriteLine(m)
top = Console.CursorTop
left = Console.CursorLeft
' Read user input from the console. Store up to 15 letter, digit, or underscore
' characters in a SecureString object, or delete a character if the user enters
' a backspace. Display an asterisk (*) on the console to represent each character
' that is stored.
Do
cki = Console.ReadKey(True)
If cki.Key = ConsoleKey.Escape Then Exit Do
If cki.Key = ConsoleKey.Backspace Then
If password.Length > 0 Then
Console.SetCursorPosition(left + password.Length - 1, top)
Console.Write(" "c)
Console.SetCursorPosition(left + password.Length - 1, top)
password.RemoveAt(password.Length - 1)
End If
Else
If password.Length < 15 AndAlso([Char].IsLetterOrDigit(cki.KeyChar) _
OrElse cki.KeyChar = "_"c) Then
password.AppendChar(cki.KeyChar)
Console.SetCursorPosition(left + password.Length - 1, top)
Console.Write("*"c)
End If
End If
Loop While cki.Key <> ConsoleKey.Enter And password.Length < 15
' Make the password read-only to prevent modification.
password.MakeReadOnly()
' Dispose of the SecureString instance.
password.Dispose()
End Sub
End Class
' The example displays output like the following:
' Enter your password (up to 15 letters, numbers, and underscores)
' Press BACKSPACE to delete the last character entered.
' Press Enter when done, or ESCAPE to quit:
' ************
Remarques
Initialisez la valeur de texte d’un instance de la SecureString classe avec les SecureString constructeurs et modifiez la valeur avec les Clearméthodes , RemoveAt, SetAt, InsertAtet AppendChar .
Une fois que vous avez apporté vos dernières modifications, utilisez la MakeReadOnly méthode pour rendre la valeur de la instance immuable (en lecture seule). Une fois que la valeur est marquée en lecture seule, toute nouvelle tentative de modification de celle-ci lève un InvalidOperationException.
L’effet de l’appel MakeReadOnly est permanent, car la SecureString classe ne fournit aucun moyen de rendre la chaîne sécurisée modifiable à nouveau. Utilisez la IsReadOnly méthode pour tester si un instance de SecureString est en lecture seule.