2008-11-25 34 views
7

在我目前正在爲客戶開發的小型應用程序中,我需要詢問用戶的Windows登錄用戶名,密碼和域名,然後將它們用於System.Diagnostics.Process.Start啓動應用程序。C#:詢問用戶密碼,然後存儲在SecureString中

我有一個UseSystemPasswordChar的文本框來掩蓋輸入的密碼。

我需要一個爲System.Security.SecureString將密碼喂System.Diagnostics.Process.Start

如何將輸入的文本轉換爲安全字符串,而不是一個接一個字符?或者:是否有更好的窗口控件要求用戶輸入以SecureString形式返回輸入文本的密碼?

回答

7

試試看看SecurePasswordTextBox自定義控件。你是否試圖做一些類似於「Run As」類型的命令,你試圖以不同於當前登錄的用戶的身份運行該進程?如果沒有,你應該能夠調用Process.Start並讓它獲取當前用戶的憑證。

而且,看看下面的資源,以及:

最好的辦法可能是使用一些互操作的P/inovke代碼來調用CredUIPromptForCredentials顯示標準的Windows對話框中,然後使用該信息或者調用的Process.Start,或者更可能調用CreateProcessAsUser函數。

+0

這正是客戶需要的:一個簡約的程序,允許用戶在其用戶上下文中啓動應用程序,而無需註銷當前登錄的用戶。 – BlaM 2008-11-25 15:17:46

3

SecureString一次只想接受一個字符的原因是否則你會在整個字符串之前使字符串在內存中。因此,在這種情況下使用SecureString會失敗目的。

相關問題