1

私はVBSを初めて使用し、WindowsでUACを開始しようとしています。

最後のEndIfの前の行で構文エラーが発生し続ける理由がわかりません

よろしければ、よろしくお願いします!

CurPass = ReadIni("C:\Program Files\User Account Control\ident.ini", "pass", "pass")
InpPass = inputbox("Please enter your current password:")
If InpPass = CurPass Then
NewPass = inputbox("Please enter your new password")
    if NewPass=CurPass Then 
        KpPass=msgbox("Your new password is the same as your old password. Keep old password?",4+32,"UAC")
        if KpPass=7 Then MsgBox("Please try again")
        end if
    Else 
        RNewPass = inputbox("Please re-enter your new password")
    end if
    if RNewPass=NewPass then 
        WriteIni "C:\Program Files\User Account Control\ident.ini", "pass", "Pass", NewPass
    else msgbox("Your new passwords do not match. Try again.")
    end If
else msgbox("Incorrect password")
End if
4

2 に答える 2

1

最後の Else .. End If には If .. Then はありません。適切なインデントを使用していれば、これはすぐにわかります。

更新: 上記の診断は間違っています。

この構造が必要だと思います:

CurPass = ""
InpPass = ""
If InpPass = CurPass Then
   NewPass = ""
   If NewPass = CurPass Then
      KpPass = ""
      If KpPass = "7" Then
         KpPass = "4711"
      End If
   Else
      RNewPass = ""
   End If
   If RNewPass = NewPass Then
      RNewPass = "xx"
   Else
      RNewPass = "yy"
   End If
Else
   CurPass = "whatamess"
End If

次に、あなたが書いたときにVBScriptは道に迷いました:

if KpPass=7 Then MsgBox("Please try again")
end if

次のような「短いif」を持つことができます

If Condition Then OneStatementAction

しかし、そうではありませんEnd If。これは、他の C 言語に似た単一行/ステートメントの条件文で {} を省略するのと少し似ています。つまり、避けたほうがよいです。

于 2012-11-04T19:02:12.517 に答える