命令批处理凭据身份验证不起作用

Command Batch Credential Authentication not working

目前,我有一个批处理文件,用户在其中输入了他们的用户名和密码,但我想在继续之前验证他们的凭据是否正确。以下是相关摘录:

SET /p USERID="Enter user id: "
SET /p USERPASSWORD="Enter password: "
ECHO %USERPASSWORD% | RUNAS /noprofile /user:%userid% "notepad"

此 returns 错误指出用户名未知或密码不正确,即使提供的凭据是正确的。 运行 没有自动输入并为其提示提供密码的 RUNAS 命令有效。为什么会失败?是否插入了尾随 space 之类的东西?有没有更好的方法来验证 Windows 凭据,或者另一个什么都不做并立即关闭的程序,我可以 运行 而不是记事本?

编辑:"user id" 还应包含您在开头所在的任何域。我还发现 运行ning "cmd.exe /C" 是一个更好的选择,因为它会立即自动关闭,所以问题的一部分已经得到回答。

双重编辑:根据这个问题here,运行as 禁用了命令行输入。这很奇怪,因为它一开始确实有效,直到我更改了密码,然后才失败。因此,验证用户凭据的更好方法是什么?

我找到了解决办法。

NET USE \localhost\c$ %USERPASSWORD% /user:%USERID%
NET USE /delete \localhost\c$

这会尝试将本地 C 驱动器添加为网络位置,而不指定目标驱动器。这避免了网络驱动器已映射到该位置的问题。之后,它取消映射位置的链接,因此可以在之后再次使用。

要检查它是否成功,只需使用类似于以下内容的内容检查 %errorlevel%:

IF %errorlevel% == 0 GOTO authenticationgood
GOTO authenticationbad