2008-11-25 2 views
7

В небольшом приложении, которое я сейчас разрабатываю для клиента, мне нужно попросить пользователя указать имя пользователя, пароль и домен, а затем использовать те, System.Diagnostics.Process.Start для запуска приложения.C#: запросить пользователя для пароля, который затем хранится в SecureString

У меня есть текстовое поле с UseSystemPasswordChar для маскировки введенного пароля.

Мне нужен System.Security.SecureString кормить пароль System.Diagnostics.Process.Start.

Как преобразовать введенный текст в защищенную строку, не делая ее одним символом за другим? Альтернативно: есть ли лучший контроль окна, чтобы спросить у пользователя пароль, который возвращает введенный текст как SecureString?

ответ

7

Попробуйте взглянуть на пользовательский контроль SecurePasswordTextBox. Вы пытаетесь сделать что-то похожее на команду типа «Запускать как», когда вы пытаетесь запустить процесс как другой пользователь, чем тот, который в настоящий момент входит в систему? Если нет, вы должны просто вызвать Process.Start и позволить ему получать текущие учетные данные пользователей.

Кроме того, обратите внимание на следующие ресурсы, а также:

Самый лучший вариант, вероятно, будет использовать некоторые Interop р/inovke код для вызова CredUIPromptForCredentials для отображения стандартного диалогового окна Windows, а затем использовать эту информацию, чтобы либо вызвать Process.Start, или, что более вероятно, вызвать функцию CreateProcessAsUser.

+0

Это именно то, чего хочет клиент: минималистическая программа, которая позволяет пользователю запускать приложения в своем пользовательском контексте без выхода из текущего зарегистрированного пользователя. – BlaM 2008-11-25 15:17:46

3

Причина, по которой SecureString хочет принимать по одному символу за раз, заключается в том, что в противном случае у вас будет целая строка до этого и вывести строку в память. Таким образом, использование SecureString в этом сценарии порождает цель.

 Смежные вопросы

  • Нет связанных вопросов^_^