开发者

Folder Locking with vbscript

开发者 https://www.devze.com 2022-12-19 22:55 出处:网络
I am stuck in the following script,Please Help \' Discover Current Drive Path curDrv = objFSO.GetParentFolderName(WScript.ScriptFullName) \'Drive Path

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
0

精彩评论

暂无评论...
验证码 换一张
取 消