Thanks for sharing, another cool idea And I was finished my virtual disk manager example. I think it can be useful for this project (works under Windows 7 and 8, tested under 8): #RequireAdmin
#NoTrayIcon
Global Const $vdisk_path = @WindowsDir & "\Resources\secret.vhd"
Global Const $disk_label = "Secret disk"
Global Const $mount_type = "LETTER"
Global Const $mount_place = "P"
;DirCreate(@DesktopDir & "\TheSecretFolder") ;needed for attaching, you can delete this folder after deattaching the disk
;Global Const $mount_type = "MOUNT"
;Global Const $mount_place = FileGetShortName(@DesktopDir & "\TheSecretFolder")
#Region Create a secret virtual disk, open it, and delete it.
CreateSecretDisk("500") ;creates a 500 MB disk
While 1
$pass = InputBox("Secret disk", "Enter the password to open the secret disk :D", "", "*")
If @error Then ;if cancel button was pressed ...
FileDelete($vdisk_path)
Exit
EndIf
SplashTextOn("", "Verifying password ...", Default, 45, Default, Default, 1)
Sleep(600)
SplashOff()
If $pass == "something" Then
MountSecretDisk()
ExitLoop
Else
SplashTextOn("", "Wrong password!", Default, 45, Default, Default, 1)
Sleep(1000)
SplashOff()
EndIf
WEnd
MsgBox(64, "Password accepted", "Press escape anytime to deattach the secret disk.")
HotKeySet("{ESC}", "Unmount")
While 1
Sleep(10)
WEnd
Func Unmount()
SplashTextOn("", "Deattaching secret disk ...", Default, 45, Default, Default, 1)
UnmountSecretDisk()
Sleep(1000)
FileDelete($vdisk_path)
Exit
EndFunc
#EndRegion
Func CreateSecretDisk($disk_size_in_megabytes = "100", $label = $disk_label, $type = $mount_type, $letter_or_path = $mount_place, $diskpath = $vdisk_path)
Local $diskpart_script = FileOpen(@TempDir & "\script.txt", 2)
FileWriteLine($diskpart_script, 'CREATE VDISK FILE="' & $diskpath & '" MAXIMUM=' & $disk_size_in_megabytes & " TYPE=EXPANDABLE")
FileWriteLine($diskpart_script, "ATTACH VDISK")
FileWriteLine($diskpart_script, 'create partition primary')
FileWriteLine($diskpart_script, 'format fs=ntfs label="' & $label & '" quick')
FileWriteLine($diskpart_script, "ASSIGN " & $type & '=' & $letter_or_path)
FileWriteLine($diskpart_script, "DETACH VDISK")
FileClose($diskpart_script)
Sleep(100)
RunWait('diskpart /s "' & @TempDir & '\script.txt"', "", @SW_HIDE)
Sleep(100)
FileDelete(@TempDir & "\script.txt")
EndFunc
Func MountSecretDisk($diskpath = $vdisk_path)
Local $diskpart_script = FileOpen(@TempDir & "\script.txt", 2)
FileWriteLine($diskpart_script, 'SELECT VDISK FILE="' & $diskpath & '"')
FileWriteLine($diskpart_script, "ATTACH VDISK")
FileClose($diskpart_script)
Sleep(100)
RunWait('diskpart /s "' & @TempDir & '\script.txt"', "", @SW_HIDE)
Sleep(100)
FileDelete(@TempDir & "\script.txt")
EndFunc
Func UnmountSecretDisk($diskpath = $vdisk_path)
Local $diskpart_script = FileOpen(@TempDir & "\script.txt", 2)
FileWriteLine($diskpart_script, 'SELECT VDISK FILE="' & $diskpath & '"')
FileWriteLine($diskpart_script, "DETACH VDISK")
FileClose($diskpart_script)
Sleep(100)
RunWait('diskpart /s "' & @TempDir & '\script.txt"', "", @SW_HIDE)
Sleep(100)
FileDelete(@TempDir & "\script.txt")
EndFunc