【问题标题】:Username/password dialog from batch script批处理脚本中的用户名/密码对话框
【发布时间】:2011-10-26 14:38:14
【问题描述】:

我需要从批处理脚本子例程中提示输入用户名和密码,并且我有以下要求:

  1. 必须是用户友好的(即不在命令行上,而是从 对话框)。
  2. 必须屏蔽密码。
  3. 在我运行批处理脚本之前必须不需要自定义设置或安装(没有 AutoIT 或奇怪的 IE 设置)。
  4. 必须与 Windows XP、2008 和 7 兼容(但如果主题的变化合适,我可以检查特定的操作系统)。

我假设我可能需要使用 VBscript,我可以轻松地从批处理脚本中创建它,然后再删除它。我确实找到了this link,有两个不同的 VBScript 选项,但第一个违反了要求 1(基于控制台),第二个违反了要求 3(这些天默认的 IE 设置不允许动态内容)。还有其他想法吗?

【问题讨论】:

    标签: windows vbscript batch-file passwords


    【解决方案1】:

    HTML Applications 可能对你有用。您可以使用<input type="password" /> 控件创建一个简单的页面。不过,除了将密码写入临时文件或注册表项之外,我想不出一种将密码从 HTA 取回批处理文件的好方法。

    【讨论】:

    • 这基本上就是我附加的链接中的第二种方法正在做的事情。它有点工作,但它需要一个
    • 该链接建议制作一个常规的 HTML 文件并使用 IE 自动化从 VBScript 文件中打开它。 HTML 应用程序是不同的。它是一个带有.HTA 文件扩展名的独立文件,在普通IE 安全沙箱之外执行。您不应收到任何安全警告。
    • 哦,我没有意识到区别。没错,HTA 确实绕过了 html 页面的安全问题。当我有完整的解决方案时,我会发布它,但我会给你答案。谢谢。
    【解决方案2】:

    我会编写一个本地 C++ 或 Delphi 应用程序,它由一个带有密码输入字段的对话框组成。

    将其编译为单个可执行文件并将输入的值返回给调用进程,批处理脚本可以与同一文件夹中的可执行文件一起提供并使用它来查询密码。

    如果 .NET 是一个选项,请编写 WindowsForms 应用程序而不是原生 C++(以加快开发速度)

    【讨论】:

    • 这是一种可能性,尽管我希望避免这种可能性。如果我必须走这条路,我可能只会编写一个简单的 Java 应用程序,因为我正在使用更大的 Java 应用程序分发它。
    【解决方案3】:

    是否无法使用 Powershell?

    您可以使用Get-Credentialprompt for authentication.

    $Credentials = Get-Credential Domain\UserName
    

    编辑:

    如果分发此应用程序,另一种选择是在安装程序中提示输入用户名和密码。您可以在 MSI 中执行此操作,但它的开销可能比您想要的要多得多。您可以改用 NSIS 并在安装程序向导中提示输入信息。 NSIS 是独立的,可以在您指定的所有操作系统上运行。

    【讨论】:

    • 不幸的是,这打破了我的第三个要求,因为我必须提前安装 powershell(据我所知)。
    • 它集成在 Win 7 中。我假设您安装在不同的操作系统上。
    • 很高兴知道,但我确实已经添加了一个明确的操作系统兼容性的第四个要求。不幸的是,我需要与 XP、2008 和 Windows 7 兼容。
    • 您的 Windows XP 安装有哪些服务包?如果我没记错的话,Windows XP SP3 带有集成的 PS 1.0。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多