在我正在为客户开发的小应用程序中,我需要询问用户他的Windows登录用户名,密码和域,然后使用System.Diagnostics.Process.Start启动应用程序.
我有一个带有UseSystemPasswordChar的文本框来屏蔽输入的密码.
我需要一个System.Security.SecureString来将密码提供给System.Diagnostics.Process.Start.
如何将输入的文本转换为安全字符串而不是一个又一个字符?或者:是否有更好的窗口控件要求用户输入密码,将输入的文本作为SecureString返回?
尝试查看SecurePasswordTextBox自定义控件.您是否尝试执行类似于"运行方式"类型命令的操作,您尝试以与当前登录用户不同的用户身份运行该进程?如果没有,您应该能够只调用Process.Start并让它获取当前用户凭据.
另外,请查看以下资源:
CredUIPromptForCredentials
CredUIPromptForWindowsCredentials(Vista和Server 2008)
Microsoft支持文章
LogonUser功能
LogonUserEx功能
CreateProcessAsUser
CreateProcessWithLogonW
CreateProcessWithTokenW
最好的选择可能是使用一些interop p/inovke代码调用CredUIPromptForCredentials来显示标准Windows对话框,然后使用该信息调用Process.Start,或者更有可能调用CreateProcessAsUser函数.