1

リンクhttp://www.robvanderwoude.com/vbstech_ui_password.phpからコピーしたVBScriptがあります

既存のVBSscriptに、「InternetExplorerバージョン」のコードを追加しました。

WS SCRIPT-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の達人、これらの問題を解決するための助け本当に歓迎されています!

4

1 に答える 1

2

が作成されていない場合C:\temp.txt、最初の問題はバッチファイルにありません。

あなたがリンクした記事の著者は、このコードはWin7では機能しないと述べています。Win7以外のマシンをテストするのに便利なものはありませんが、IEがC:ドライブのルートに書き込む権限を持っているとは思えません(彼のコードはこれを行いません)。もう1つの可能性はPassword.vbs、バッチファイルと同じパスにないことです。ただし、その場合はエラーメッセージが表示されます。

これはとにかくコマンドラインから実行されるので、彼が投稿したはるかに単純なWScriptバージョンを変更してみませんか?これが非管理者によって実行されていると仮定し、これが実行されているOSに応じて、ユーザーが書き込みを許可されているディレクトリを使用する必要があります(たとえば%TEMP%\temp.txt)。

そうは言っても、遭遇する問題がさらにいくつかあります。1つは、OpenTextFile呼び出しでForAppendingモードが使用されることです(ここでは「8」です)。これは、temp.txtファイルにユーザーがこれまでに入力したすべての回答が保持されることを意味します。これはまた、あなたがあなたをするときfindstr、誰かが適切なパスワードを入力したことがあれば、チェックが成功することを意味します。ForWriting毎回新しく生成されるように使用する方が良いでしょう。詳細については、このMSDNの記事を参照してください。

この方法は、パスワードを処理するための安全な方法ではありません。1つには、ユーザーは有効なパスワードを保存しているバッチファイルの内容を読み取るだけで済み、さらに簡単に言えば、パスワードが正しい場合に何が起こるかを確認することもできます。ただし、この方法で行う必要がある場合は、バッチファイルを次のように変更することをお勧めします。

@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.
于 2012-08-03T15:49:39.067 に答える