은 속성에 적어서 할당 할 수있는 간단한 문자열이 아닙니다. 필요한 것은 SecureString 인스턴스이며 간단한 문자열을 생성자에 전달하여 SecureString을 만들 수 없습니다. 분명히 OS에는 신뢰할 수없는 프로그램이 현재 사용자의 암호를 검색 할 수있는 API 나 메소드가 없습니다 (이것은 가장 큰 보안 버그 일 것입니다).
제 생각에는 단지 하나의 옵션 만 남았습니다. 암호를 다시 입력하는 사용자를 요청하고 결과 입력이 SecureString
이 예제로 변환해야하는 것은 I have seen here
using System.Security;
// ...
public static SecureString ConvertToSecureString(this string password)
{
if (password == null)
throw new ArgumentNullException("password");
unsafe
{
fixed (char* passwordChars = password)
{
var securePassword = new SecureString(passwordChars, password.Length);
securePassword.MakeReadOnly();
return securePassword;
}
}
}
당신이 입력 한 암호를 변환하는 데 사용할 수있는 문자열 클래스에 대한 확장 방법 귀하의 사용자가 프로세스를 시작하십시오.
using(frmGetPassword fgp = new frmGetPassword())
{
if(DialogResult.OK == fgp.ShowDialog())
{
SecureString ss = fgp.Password.ConvertToSecureString();
var processInfo = new ProcessStartInfo
{
WorkingDirectory = workingDirectory,
FileName = "a name",
UserName = loggedUserName,
Password = ss,
Domain = userNameDomain,
UseShellExecute = false,
};
Process.Start(processInfo);
}
}
암호 속성은 SecureString입니다. 그 방법으로 간단히 쓸 수는 없습니다 – Steve
프로그램을 시작할 때 읽을 파일/데이터베이스에 저장할 수 있습니다. 또한 파일에 대한 간단한 방법론 (http://stackoverflow.com/questions/740812/whats-the-easiest-way-to-encrypt-a-file-in-c)에 의존하거나, DB (http://dev.mysql.com/doc/refman/5.0/es/set-password.html)의 내장 함수를 참조하십시오. – varocarbas