1

是否可以使用System.Windows.Forms.TextBox(或任何其他方法)输入可以转换为安全字符串的文本?我希望能够获取输入的值,将其转换为安全字符串并将其写入文件,然后如果需要可以调用该文件,并且如果我们需要识别该值,安全字符串会转换回来。

我已经研究过类似的东西,但由于我使用的是 TextBox 表单,我不想依赖 Read-Host

$secstr = Read-Host -AsSecureString "Enter your text"

$secstr | ConvertFrom-SecureString | out-file C:\temp\test.txt

$secstr = get-content c:\temp\test.txt | ConvertTo-SecureString -AsPlaintText -Force

本质上,我想让一个文本框使用掩码/密码字符(我可以使用它$TextBox.PasswordChar = "*",然后将该输入转储到一个安全字符串文本文件中。然后,我可以使用另一个脚本来调用该文件并显示文本如果最终用户需要知道当前值,则以纯文本形式提供给他们。

4

2 回答 2

5

如果要将其嵌入自定义 GUI,请使用 aMaskedTextBox而不是常规:TextBox

Add-Type -Assembly 'System.Windows.Forms'

$form = New-Object Windows.Forms.Form

$password = New-Object Windows.Forms.MaskedTextBox
$password.PasswordChar = '*'
$password.Top  = 100
$password.Left = 80

$form.Controls.Add($password)

$form.ShowDialog()

[来源]

然后将文本转换为安全字符串:

$secstr = $password.Text | ConvertTo-SecureString -AsPlaintText -Force

如果您只想提示输入凭据,您可以使用Get-Credential,它已经将输入的密码存储为安全字符串:

PS C:\> $cred = 获取凭据

Cmdlet Get-Credential an der Befehlspipelineposition 1
Geben Sie Werte für die folgenden 参数 an:
凭据
PS C:\> $cred .密码
System.Security.SecureString
于 2015-01-21T16:17:47.807 回答
1

另一种方法是使用纯文本框,如 Ansgar 所述,使用 PasswordChar 属性:

$textbox = New-Object System.Windows.Forms.Textbox
$textbox.Size = '75,23'
$textbox.PasswordChar = '*'
$form.Controls.Add($textbox)
于 2015-01-21T16:45:44.300 回答