C#:向用户询问密码,然后将密码存储在SecureString中

时间:2008-11-25 15:10:22

标签: c# .net passwords securestring

在我正在为客户开发的小应用程序中,我需要询问用户他的Windows登录用户名,密码和域名,然后使用 System.Diagnostics.Process.Start 开始申请。

我有一个带有UseSystemPasswordChar的文本框来屏蔽输入的密码。

我需要一个 System.Security.SecureString 来将密码提供给 System.Diagnostics.Process.Start

如何将输入的文本转换为安全字符串,而不是一个又一个字符?或者:是否有更好的窗口控件要求用户输入密码,将输入的文本作为SecureString返回?

2 个答案:

答案 0 :(得分:7)

尝试查看SecurePasswordTextBox自定义控件。您是否尝试执行类似于“运行方式”类型命令的操作,您尝试以与当前登录用户不同的用户身份运行该进程?如果没有,您应该能够只调用Process.Start并让它获取当前用户凭据。

另外,请看一下以下资源:

最好的选择可能是使用一些interop p / inovke代码调用CredUIPromptForCredentials来显示标准Windows对话框,然后使用该信息调用Process.Start,或者更有可能调用CreateProcessAsUser函数。 / p>

答案 1 :(得分:3)

SecureString一次想要接受一个字符的原因是否则你会在此之前拥有整个字符串并导致字符串在内存中。因此,在这种情况下使用SecureString会破坏目的。