7

私が現在顧客向けに開発している小さなアプリケーションでは、ユーザーに Windows ログインのユーザー名、パスワード、ドメインを尋ね、System.Diagnostics.Process.Startでそれらを使用してアプリケーションを起動する必要があります。

入力したパスワードをマスクする UseSystemPasswordChar のテキストボックスがあります。

System.Diagnostics.Process.Startにパスワードを入力するにはSystem.Security.SecureStringが必要です。

入力したテキストを1文字ずつではなく安全な文字列に変換するにはどうすればよいですか? または、入力したテキストを SecureString として返すパスワードをユーザーに要求するためのより良いウィンドウ コントロールはありますか?

4

2 に答える 2

7

SecurePasswordTextBoxカスタム コントロールを調べてみてください。現在ログオンしているユーザーとは別のユーザーとしてプロセスを実行しようとしている「Run As」タイプのコマンドに似たようなことをしようとしていますか? そうでない場合は、Process.Start を呼び出すだけで、現在のユーザーの資格情報を取得できるはずです。

また、次のリソースも参照してください。

おそらく最善の方法は、何らかの相互運用 p/inovke コードを使用して CredUIPromptForCredentials を呼び出し、標準の Windows ダイアログ ボックスを表示し、その情報を使用して Process.Start を呼び出すか、より可能性が高いのは CreateProcessAsUser 関数を呼び出すことです。

于 2008-11-25T15:15:50.720 に答える
3

SecureString が一度に 1 文字を受け入れたい理由は、そうしないと、その前に文字列全体が存在し、文字列がメモリ内に存在してしまうからです。したがって、このシナリオで SecureString を使用すると、目的が果たせなくなります。

于 2008-11-25T15:15:50.360 に答える