2017-03-22 69 views
0

目前,我有一個批處理文件,其中我有一個用戶輸入他們的用戶名和密碼,但我想在繼續之前認證他們是正確的憑據。下面是相關的摘錄:命令批量身份驗證不起作用

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

這將返回一個錯誤,指出用戶名未知或密碼不正確,即使提供的憑據是正確的。在沒有自動輸入的情況下運行RUNAS命令併爲提示符提供密碼。爲什麼這是失敗的?是否有插入的尾部空間或什麼?有沒有更好的方法來驗證Windows憑據或另一個什麼也不做,並且立即關閉而不是記事本的程序?

編輯:「用戶ID」還應包含您開始時的任何域。我還發現運行「cmd.exe/C」是一個更好的選擇,因爲它立即自動關閉,所以問題的一部分已被回答。

雙編輯:根據此問題here,runas命令行輸入被禁用。這很奇怪,因爲它實際上起作用,直到我更改密碼,然後失敗。因此,認證用戶憑證的更好方法是什麼?

+2

的([自動從批處理文件運行方式迴應]可能的複製http://stackoverflow.com/問題/ 22866137 /自動搶答到運行方式 - 從 - 批處理文件) – Compo

回答

0

我找到了解決辦法。

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

這會嘗試將本地C驅動器添加爲網絡位置,而不指定目標驅動器。這避免了網絡驅動器已經映射到該位置的問題。之後,它將取消鏈接映射的位置,以便隨後再次使用。

要檢查是否成功,只需檢查%ERRORLEVEL%類似下面的內容:

IF %errorlevel% == 0 GOTO authenticationgood 
GOTO authenticationbad