Folder Locking with vbscript
I am stuck in the following script,Please Help
' Discover Current Drive Path
curDrv = objFSO.GetParentFolderName(WScript.ScriptFullName) 'Drive Path
ulpath = curdrv & "\Locker"
propath = curdrv & "\Control_Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
passFile = curdrv & "\pass.txt"
If objFSO.FolderExists (propath) Then call Unlock
If Not objFSO.FolderExists (ulpath) Then
objFSO.CreateFolder (ulpath)
MsgBox "Folder Created Successfully" , vbInformation, "Process Success" & WScript.Quit
end if
If objFSO.FolderExists (ulpath) Then call Lock
WScript.Quit
Sub PassCreate
PSCR = InputBox ("Type a password to lock folder. Do Not use blank password for your safety.")
IF PSCR="" then MsgBox "Password cannot be blank" , vbCritical, "Faulty"
IF PSCR="" & objFSO.FileExists(passFile) then
objFSO.DeleteFile(passFile)
end if
IF PSCR="" then call PassCreate
Set objFile = objFSO.CreateTextFile(passFile,True)
objFile.Write PSCR & vbCrLf
objFile.Close
End Sub
Sub Unlock
PSW = InputBox ("Please Enter your 10 digit Password. Example : 9867123456")
Set objFile = objFSO.OpenTextFile(passFile)
Do Until objFile.AtEndOfStream
strLine= objFile.ReadLine
Loop
objFile.Close
If not PSW=strLine Then MsgBox "Wrong Password" , vbCritical, "Illegal Operation" & WScript.Quit
objFSO.MoveFolder propath , ulpath
Set FO = objFSO.GetFolder(ulpath)
FO.Attributes = FO.Attributes AND 0
MsgBox "Folder Unlocked Successfully" , vbInformation, "Success Operation" & WScript.Quit
End Sub
Sub Lock
Message = "Are you Sure you want" & vbCr & vbCr
Message = Message & "to Lock the folder ?" & vbCr & vbCr
X = MsgBox(Message, vbOKCancel, "Confirmation")
If not objFSO.FileExists (passFile) then call PassCreate
Select Case X
Case vbOK
objFSO.MoveFolder ulpath , propath
Set objFolder = objFSO.GetFolder(propath)
Set F开发者_如何学运维L = objFSO.GetFolder(propath)
FL.Attributes = FL.Attributes XOR -1
MsgBox "Folder Locked Sucessfully." , vbInformation, "Process Success"
Case vbCancel
MsgBox "Nothing Done." , vbExclamation, "Process Aborted"
End Select
End Sub
Under sub passcreate if the password is blank first time nothing is written to the pass.txt so no password created.I want to prevent accidental blank password creation.I do not know how to cancel script execution if cancel is selected on the both the inputbox.
Why not ask for the password in a loop like this.
PSCR = ""
DO While PSCR = ""
PSCR = InputBox ("Type a password to lock folder. Do Not use blank password for your safety.")
IF PSCR="" then
MsgBox "Password cannot be blank" , vbCritical, "Faulty"
END IF
Loop
That way the user would have to enter a password to continue running the script.
EDIT: This should do everything you want.
Sub TheScript
password = GetPassword
If password = "" Then Exit Sub
MsgBox password
End Sub
Function GetPassword
PSCR = ""
DO While PSCR = ""
PSCR = InputBox ("Type a password to lock folder. Do Not use blank password for your safety.")
If IsEmpty(PSCR) Then
MsgBox "Cancel Pressed"
Exit do
ElseIf PSCR = "" Then
MsgBox "Password cannot be blank" , vbCritical, "Faulty"
End If
Loop
GetPassword = PSCR
End Function
Use exit sub
just below the condition where you are checking if password is empty eg:
IF PSCR="" then
MsgBox "Password cannot be blank" , vbCritical, "Faulty"
Exit Sub
End If
Nothing to do with yours but I'd like to share my 2 locks XD
The first one is simple and saved as .bat (The password is 5953, just look for it in the script and change it.)
cls
@ECHO OFF
title Folder Locker
if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK
if NOT EXIST Locker goto MDLOCKER
:LOCK
ren Locker "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
goto End
:UNLOCK
cls
echo Enter password to Unlock folder
set/p "pass=>"
if NOT %pass%==5953 goto FAIL
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" Locker
goto End
:FAIL
ECHO.
echo Invalid password.
ECHO.
echo Want to give it another try ???(Y/N)
set/p "cho=>"
if %cho%==Y goto UNLOCK
if %cho%==y goto UNLOCK
if %cho%==n goto SHUTDOWN
if %cho%==N goto SHUTDOWN
:MDLOCKER
md Locker
echo Locker Folder was created successfully.
goto End
:SHUTDOWN
Shutdown.exe -s -t 10
cls
msg * Wrong Password Bro.
:End
Here is the second one. Keep in mind I have 2 other files that goes with this one.
1. Is a .BAT file like this...
@echo off
Shutdown.exe -s -t 10
cls
msg * your message here!
2. Is a txt file like this...
.LOG
This is the main file saved as vbs.
Option Explicit
Dim sapi,x,filler,T,objSHL,n,i,KContinue
set x=createobject("wscript.shell")
Set sapi=CreateObject("sapi.spvoice")
Set objSHL = CreateObject("WScript.Shell")
sapi.Speak "Please enter your access key"
KContinue = True
Do While KContinue
filler = inputbox("Enter your Access key.")
KContinue = False
if filler= "2648" then
call a
elseif filler= "" then
call b
else
call c
end if
Loop
sub a
x.Run ("""C:\Finnished Scripts\Intruder Alert.txt""")
wscript.sleep 2000
x.sendkeys "Access Granted"
wscript.sleep 2000
x.sendkeys "{enter}"
x.sendkeys "%"
wscript.sleep 500
x.sendkeys "{enter}"
x.sendkeys "s"
wscript.sleep 300
x.sendkeys "{enter}"
wscript.sleep 500
x.sendkeys "%"
x.sendkeys "{enter}"
x.sendkeys "x"
x.sendkeys "{enter}"
sapi.Speak "access granted"
end sub
sub b
x.Run ("""C:\Finnished Scripts\Intruder Alert.txt""")
wscript.sleep 2000
x.sendkeys "Access Denied, User gave no input"
wscript.sleep 2000
x.sendkeys "{enter}"
x.sendkeys "%"
x.sendkeys "{enter}"
x.sendkeys "s"
wscript.sleep 300
x.sendkeys "{enter}"
wscript.sleep 500
x.sendkeys "%"
x.sendkeys "{enter}"
x.sendkeys "x"
x.sendkeys "{enter}"
sapi.Speak "Access Denied, User gave no input"
sapi.Speak "You have ten seconds left on this PC"
call tb
end sub
sub c
x.Run ("""C:\Finnished Scripts\Intruder Alert.txt""")
wscript.sleep 2000
x.sendkeys "Access Denied, User input"
x.sendkeys "{enter}"
x.sendkeys filler
wscript.sleep 2000
x.sendkeys "{enter}"
x.sendkeys "%"
x.sendkeys "{enter}"
x.sendkeys "s"
wscript.sleep 300
x.sendkeys "{enter}"
wscript.sleep 500
x.sendkeys "%"
x.sendkeys "{enter}"
x.sendkeys "x"
x.sendkeys "{enter}"
sapi.Speak "Access Denied, User input"
sapi.Speak filler
sapi.Speak "You have ten seconds left on this PC"
call tb
end sub
sub tb
n=10
For i = 1 To n
sapi.Speak(n)&("select yes to try the password again")
T = objSHL.Popup("Want to try again? You have "&n&" seconds",1,"title",vbYesNo)
If T = vbYes Then
sapi.Speak"YOU MAY TRY AGAIN"
KContinue = True
Exit for
ElseIf T = vbNo Then
sapi.Speak("you have selected no, no pc access for you")
x.Run ("""C:\Finnished Scripts\Shutdown computer.bat""")
Exit for
End If
n=n-1
If n = 0 then
sapi.Speak("you have selected nothing, no pc access for you")
x.Run ("""C:\Finnished Scripts\Shutdown computer.bat""")
End If
Next
end sub
精彩评论