2012-08-03 81 views
2

我從鏈接http://www.robvanderwoude.com/vbstech_ui_password.php批量解析爲VBScript

在現有VBSscript複製一個VBScript我加入了代號爲「Internet Explorer版本」:

WS腳本 - 名爲Password.vbs(看到完整的劇本在上面的鏈接

strPw = GetPassword("Please, type your password:") 

Sub Submit_OnClick 
Const ForWriting = 2 
Dim filesys, filetxt, FormContent 
Set FormContent = document.getElementById("strPw") 
Set filesys = CreateObject("Scripting.FileSystemObject") 
Set filetxt = filesys.OpenTextFile("c:\temp.txt", ForWriting, True) 
filetxt.WriteLine(FormContent.value) 
filetxt.Close 
End Sub 

批處理腳本

@echo off 

SET VALIDPASSWORD=1234 

wscript Password.vbs 

findstr %VALIDPASSWORD% c:\temp.txt 
if ERRORLEVEL 1 (
    echo Incorrect password. 
    goto :EOF 
) else (
    echo Password correct. 
) 

echo Batch continues from here 
pause 

:EOF 
exit /b 

文件TEMP.TXT應發送到c:\與信息輸入的輸入框的用戶。該批次將讀取此輸入並與設定的密碼進行比較並繼續編碼...

我該怎麼做這項工作? temp.TXT是不會產生的...

BATCH和VBS大師們在那裏,任何幫助SOLVE這些問題真的很受歡迎!

+0

您是否製作了一個名爲「strPw」和一個提交按鈕文本框一種形式「提交」? – Nilpo 2012-08-03 16:23:55

+0

是的,我做過。請參閱上面鏈接的完整腳本。我沒有修改Vanderwoud的腳本,只是在原始腳本的頂部添加了上面的代碼。仍然有問題寫入temp.txt – 2012-08-04 20:30:25

回答

3

如果C:\temp.txt沒有被創建,那麼第一個問題不在批處理文件中。

您鏈接到的文章的作者提到此代碼在Win7上不起作用。我沒有一個非Win7機器可以測試,但我懷疑IE是否有權寫入C:驅動器的根目錄(他的代碼不會這樣做)。另一種可能性是Password.vbs與您的批處理文件不在相同的路徑中。儘管如此,你會得到一個錯誤信息。

因爲這將從命令行運行,爲什麼不嘗試修改他發佈的更簡單的WScript版本?假設這是由非管理員運行的,並且根據運行的操作系統,您需要使用用戶有權寫入的目錄(例如,%TEMP%\temp.txt)。

話雖如此,你還會遇到更多的問題。首先,你的OpenTextFile呼叫使用ForAppending模式(那裏是'8')。這意味着你的temp.txt文件將保存用戶輸入的所有答案。這也意味着,當你做你的findstr,如果有人有有史以來把正確的密碼,檢查將成功。使用ForWriting會更好,因此每次都會新生成。有關更多信息,請參閱this MSDN article

此方法不是處理密碼的安全方式。一方面,用戶可以只讀取存儲有效密碼的批處理文件的內容,或者更容易,他們只要看到密碼正確就可以看到會發生什麼。但是如果你必須這樣做,我會建議改變你的批處理文件是這樣的:

@echo off 
REM This file assumes that you switch to a wscript version 
REM and use the recommendations I gave. 

SET VALIDPASSWORD=IAmTheRightPassword 

wscript Password.vbs 
findstr %VALIDPASSWORD% %TEMP%\temp.txt 
if ERRORLEVEL 1 (
    echo Incorrect password. 
    goto :EOF 
) else (
    echo Password correct. 
) 
REM Here's where you put whatever you were going to do if 
REM the password was correctly entered. 
+0

Hello Mark,我已閱讀MSDN文章並按照您的建議編輯了WSscript和Batch。我仍在使用未修改的Vanderwoude的Internet Explorer腳本。我剛剛在腳本的頂部添加了上述WSscript中描述的代碼。還是行不通。在輸入框中輸入密碼後,我的temp.txt文件不會被創建。它說「Findstr無法打開temp.txt」。 「無效的密碼」。批處理文件和vbs文件位於相同的位置(c:\ drive)。我是我家裏電腦的管理員。 – 2012-08-04 20:38:10

+0

您使用的是哪個版本的Windows? – Mark 2012-08-06 20:00:12

+0

Windows XP,SP2 – 2012-08-07 21:46:42