Windows 命令批凭据身份验证不工作

Windows 命令批凭据身份验证不工作,windows,batch-file,authentication,runas,Windows,Batch File,Authentication,Runas,目前,我有一个批处理文件,其中有一个用户输入了他们的用户名和密码,但我想在继续之前验证他们的凭据是否正确。以下是相关摘录: SET /p USERID="Enter user id: " SET /p USERPASSWORD="Enter password: " ECHO %USERPASSWORD% | RUNAS /noprofile /user:%userid% "notepad" 这将返回一个错误,指出用户名未知或密码不正确,即使提供的凭据正确。在没有自动输入的情况下运行RUNAS命

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

SET /p USERID="Enter user id: "
SET /p USERPASSWORD="Enter password: "
ECHO %USERPASSWORD% | RUNAS /noprofile /user:%userid% "notepad"
这将返回一个错误,指出用户名未知或密码不正确,即使提供的凭据正确。在没有自动输入的情况下运行RUNAS命令,并为其提示符提供密码。为什么会失败?是否插入了尾随空格或其他内容?有没有更好的方法来验证Windows凭据,或者其他什么都不做并立即关闭的程序,我可以运行它来代替记事本

编辑:“用户id”还应该包含开始时所在的域。我还发现运行“cmd.exe/C”是一个更好的选择,因为它会立即自动关闭,所以部分问题已经得到了回答


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

我找到了一个解决方案

NET USE \\localhost\c$ %USERPASSWORD% /user:%USERID%
NET USE /delete \\localhost\c$
这会尝试将本地C驱动器添加为网络位置,而不指定目标驱动器。这样就避免了网络驱动器已经映射到该位置的问题。之后,它将取消映射位置的链接,以便以后可以再次使用

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

IF %errorlevel% == 0 GOTO authenticationgood
GOTO authenticationbad
可能重复的