Блокировка папок с помощью VBScript - PullRequest
0 голосов
/ 14 февраля 2010

Я застрял в следующем скрипте, пожалуйста, помогите

 ' 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 FL = 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 

В подпункте passcreate, если пароль пуст, когда в первый раз ничего не записывается в файл pass.txt, поэтому пароль не создается. Я хочу предотвратить случайное создание пустого пароля. Я не знаю, как отменить выполнение скрипта, если выбрана отмена на оба поля ввода.

Ответы [ 3 ]

0 голосов
/ 15 февраля 2010

Почему бы не попросить пароль в такой петле.

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

Таким образом, пользователю необходимо будет ввести пароль, чтобы продолжить выполнение сценария.

EDIT: Это должно делать все, что вы хотите.

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
0 голосов
/ 05 сентября 2018

Ничего общего с твоим, но я бы хотел поделиться своими двумя замками XD


Первый простой и сохраняется как .bat (пароль 5953, просто найдите его в скрипте и измените его).


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

Вот второй. Имейте в виду, у меня есть еще 2 файла, которые идут с этим.

1. Это файл .BAT, подобный этому ...

@echo off  
Shutdown.exe -s -t 10  
cls  
msg * your message here!

2. Это текстовый файл, как это ...

.LOG

Это основной файл, сохраненный как 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 голосов
/ 14 февраля 2010

Используйте exit sub чуть ниже условия, при котором вы проверяете, пустой ли пароль, например:

IF PSCR="" then
  MsgBox "Password cannot be blank" , vbCritical, "Faulty"  
  Exit Sub
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...