C #: попросить пользователя пароль, который затем сохраняется в SecureString - PullRequest
7 голосов
/ 25 ноября 2008

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

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

Мне нужна System.Security.SecureString для передачи пароля на System.Diagnostics.Process.Start .

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

Ответы [ 2 ]

7 голосов
/ 25 ноября 2008

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

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

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

3 голосов
/ 25 ноября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...