Auf Englisch lesen

Freigeben über


SecureString.MakeReadOnly Methode

Definition

Legt den Textwert dieser sicheren Zeichenfolge als schreibgeschützt fest.

C#
public void MakeReadOnly();

Ausnahmen

Diese sichere Zeichenfolge wurde bereits verworfen.

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie die AppendChar Methoden und RemoveAt verwendet werden können, um die Zeichen in einem Kennwort zu sammeln. Nachdem das Kennwort gesammelt wurde, wird es schreibgeschützt.

C#
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:
//    ************

Hinweise

Initialisieren Sie den Textwert eines instance der SecureString -Klasse mit den SecureString Konstruktoren, und ändern Sie den Wert mit den ClearMethoden , , RemoveAtSetAt, InsertAtundAppendChar.

Nachdem Sie ihre letzten Änderungen vorgenommen haben, verwenden Sie die MakeReadOnly -Methode, um den Wert des instance unveränderlich (schreibgeschützt) zu machen. Nachdem der Wert als schreibgeschützt markiert wurde, löst jeder weitere Versuch, ihn zu ändern, einen aus InvalidOperationException.

Der Effekt des Aufrufens MakeReadOnly ist dauerhaft, da die SecureString -Klasse keine Möglichkeit bietet, die sichere Zeichenfolge wieder änderbar zu machen. Verwenden Sie die IsReadOnly -Methode, um zu testen, ob ein instance von SecureString schreibgeschützt ist.

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Weitere Informationen