7

在我目前正在为客户开发的小型应用程序中,我需要询问用户他的 Windows 登录用户名、密码和域,然后使用System.Diagnostics.Process.Start来启动应用程序。

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

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

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

4

2 回答 2

7

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

另外,请查看以下资源:

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

于 2008-11-25T15:15:50.720 回答
3

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

于 2008-11-25T15:15:50.360 回答