Csharp/C Sharp by API/System.Security/SecureString
Версия от 15:31, 26 мая 2010; (обсуждение)
SecureString.RemoveAt
using System;
using System.Security;
using System.Diagnostics;
class MainClass {
public static SecureString ReadString() {
SecureString str = new SecureString();
ConsoleKeyInfo nextChar = Console.ReadKey(true);
while (nextChar.Key != ConsoleKey.Enter) {
if (nextChar.Key == ConsoleKey.Backspace) {
if (str.Length > 0) {
str.RemoveAt(str.Length - 1);
Console.Write(nextChar.KeyChar+" " +nextChar.KeyChar);
} else {
Console.Beep();
}
} else {
str.AppendChar(nextChar.KeyChar);
Console.Write("*");
}
nextChar = Console.ReadKey(true);
}
str.MakeReadOnly();
return str;
}
public static void Main() {
string user = "user1";
Console.Write("Enter the user"s password: ");
using (SecureString pword = ReadString()) {
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "notepad.exe";
startInfo.UserName = user;
startInfo.Password = pword;
startInfo.UseShellExecute = false;
using (Process process = new Process()) {
process.StartInfo = startInfo;
try {
process.Start();
} catch (Exception ex) {
Console.WriteLine("\n\nCould not start Notepad process.");
Console.WriteLine(ex);
}
}
}
}
}