SecureString.MakeReadOnly Метод

Определение

Делает текстовое значение этой защищенной строки доступным только для чтения.

C#
public void MakeReadOnly ();

Исключения

Защищенная строка уже удалена.

Примеры

В следующем примере показано, как AppendChar можно использовать методы и RemoveAt для сбора символов в пароле. После сбора пароля он становится доступным только для чтения.

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

Комментарии

Инициализируйте текстовое значение экземпляра SecureString класса конструкторами SecureString и измените Clearзначение с помощью методов , RemoveAt, SetAt, InsertAt, и AppendChar .

После внесения окончательных изменений используйте MakeReadOnly метод , чтобы сделать значение экземпляра неизменяемым (только для чтения). После того как значение помечено как доступное только для чтения, при любой дальнейшей попытке его изменения возникает исключение InvalidOperationException.

Эффект вызова MakeReadOnly является постоянным, так как SecureString класс не предоставляет средств для повторного изменения безопасной строки. Используйте метод , IsReadOnly чтобы проверить, доступен ли экземпляр только SecureString для чтения.

Применяется к

Өнім Нұсқалар
.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
.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

См. также раздел