
欢迎来到 TechNet 专栏,在这里,Microsoft 脚本专家将为您解答与系统管理脚本编写有关的各种常见问题。遇到了系统脚本编写方面的问题?请将电子邮件发送到 scripter@microsoft.com。我们不能保证回答收到的所有问题,但是我们将尽最大的努力。
今日问题:如何使用 InputBox 来屏蔽密码?
您好,脚本专家!如何使用 InputBox 来屏蔽密码?
-- PG
你好,PG。如果您希望使用 WSH 或 VBScript 内置函数或方法来屏蔽密码,恐怕要让您失望了,这两种技术都不支持密码屏蔽。这并不是说无法做到密码屏蔽,而是必须寻找核心脚本技术以外的方法。
如果运行的是 Windows XP 或 Windows Server 2003,您可以使用“ScriptPW”(仅在这两个 Windows 版本中提供的一种 COM 对象)通过命令行来屏蔽密码。以下是一个示例脚本,它创建一个 ScriptPW.Password 对象实例,然后使用 StdOut Write 方法要求用户输入密码:
Set objPassword = CreateObject("ScriptPW.Password")
WScript.StdOut.Write "Please enter your password:"
strPassword = objPassword.GetPassword()
Wscript.Echo
Wscript.Echo "Your password is: " & strPassword
运行该脚本时,屏幕上会显示消息“Please enter your password:”。此时脚本将暂停,等待您键入密码;您只需键入密码,然后按 Enter 键即可。下面这行代码将获取密码,并将其存储在变量 strPassword 中:
strPassword = objPassword.GetPassword()
对于这个简单脚本,我们只回显键入的密码以证明确实捕获到了击键。我们这样编写脚本是因为,在使用 ScriptPW 和 GetPassword() 方法时,键入的击键并不显示在屏幕上。换言之,密码被屏蔽了。
当然,如果运行的是 Windows XP 或 Windows Server 2003,这种方法效果非常好;但如果运行的是 Windows 2000,该怎么办呢?如何屏蔽密码呢?
有人可能认为会比较费事,但实际上您可以调用 Web 页,并使用 HTML 密码框来屏蔽密码。本专栏并不是专门探讨 HTML 标记的地方,因此,我们不会详细说明它的全部实现方式。我们只想告诉您需要执行的两项操作。
第一项操作是将以下内容保存为 C:\Scripts\Password.htm(是的,我们要将其保存为 HTML 页):
<SCRIPT LANGUAGE="VBScript">
Sub RunScript
OKClicked.Value = "OK"
End Sub
Sub CancelScript
OKClicked.Value = "Cancelled"
End Sub
</SCRIPT>
<BODY>
<font size="2" face="Arial">
Password: </font><font face="Arial">
<input type="password" name="UserPassword" size="40"></font></p>
<input type="hidden" name="OKClicked" size = "20">
<input id=runbutton class="button" type="button" value=" OK "
name="ok_button" onClick="RunScript">
<input id=runbutton class="button" type="button" value="Cancel"
name="cancel_button" onClick="CancelScript">
</BODY>
第二项操作是将以下代码保存为 .vbs 文件(例如,Password.vbs):
On Error Resume Next
Set objExplorer = WScript.CreateObject _
("InternetExplorer.Application", "IE_")
objExplorer.Navigate "file:///C:\Scripts\password.htm"
objExplorer.ToolBar = 0
objExplorer.StatusBar = 0
objExplorer.Width = 400
objExplorer.Height = 350
objExplorer.Left = 300
objExplorer.Top = 200
objExplorer.Visible = 1
Do While (objExplorer.Document.Body.All.OKClicked.Value = "")
Wscript.Sleep 250
Loop
strPassword = objExplorer.Document.Body.All.UserPassword.Value
strButton = objExplorer.Document.Body.All.OKClicked.Value
objExplorer.Quit
Wscript.Sleep 250
If strButton = "Cancelled" Then
Wscript.Quit
Else
Wscript.Echo strPassword
End If
那么,接下来该做什么呢?启动 Password.vbs。在执行此操作时,屏幕上会弹出一个带有密码框的 Web 页。如果键入密码并单击“OK”,所键入的密码将回显在屏幕上(同样只是为了说明确实捕获到了键入的密码)。如果单击“Cancel”,脚本将会结束执行。
如果要查找一些使用 ScriptPW 和 HTML 密码框的更实用示例,“脚本中心”的远程/多计算机模板也许可以满足您的需要。其中的示例脚本并不仅限于回显您输入的密码,它们还会捕获这些密码,然后使用 WMI 的 ConnectServer 方法或 ADSI 的 OpenDSObject 方法安全地连接到远程计算机。
欢迎访问您好,脚本专家!- 存档