Avatar billede jonashn Nybegynder
30. oktober 2006 - 16:10 Der er 1 løsning

Login script der mounter truecrypt volume

Hej!

For at få bedre sikkerhed på min pc har jeg besluttet mig for at flytte alle mine dokumenter indbefattet skrivebordet til en virtuel harddisk, der ligger i en krypteret fil vha. TrueCrypt (http://www.truecrypt.org/)
Jeg har i nogen til bakset med et "login"-script der lukker explorer.exe, kører TrueCrypt commandline, så der kommer en password-dialog frem og så kører i uendelig løkke indtil disken (X:\) er mounted.
Problemet er nu at explorer hele tiden åbner igen, og ikke venter til x:\ er mounted.
Kode:

option explicit
Dim objFso, objWMIService, objStartup,  objConfig, objProcess, colProcess, strComputer, intProcessID, intProcessID1


Set objFso= Wscript.CreateObject("Scripting.FileSystemObject")
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process Where Name = 'explorer.exe'")
strComputer = "."



'kill explorer.exe
For Each objProcess in colProcess
objProcess.Terminate()
Next



'open TrueCrypt window
objProcess.Create "c:\Program Files\TrueCrypt\TrueCrypt /q /v c:\tc", Null, objConfig, intProcessID



'wait for volume to be mounted
set objFso= Wscript.CreateObject("Scripting.FileSystemObject")
Do Until objFso.FolderExists("X:\")
    WScript.Sleep(50)
Loop


'open explorer again
Const ABOVE_NORMAL = 32768
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.PriorityClass = ABOVE_NORMAL
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
objProcess.Create "explorer.exe", Null, objConfig, intProcessID



(Naturligvis skal explorer starte med HIGH proirity og ikke ABOVE_NORMAL, men kunne ikke finde koden for det.)

Problemet var så at explorer åbnede inden x:\ var mounted.
(Hvilket naturligvis ikke kan accepteres da desktoppen ligger på X:\)

Jeg prøvede så denne version:
(logon.vbs)

option explicit
Dim objFso, objWMIService, objStartup,  objConfig, objProcess, colProcess, strComputer, intProcessID, intProcessID1


Set objFso= Wscript.CreateObject("Scripting.FileSystemObject")
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process Where Name = 'explorer.exe'")
strComputer = "."


'kill explorer.exe
Const ABOVE_NORMAL = 32768
strComputer = "."
objConfig.PriorityClass = ABOVE_NORMAL
objProcess.Create "killexplorer.vbs", Null, objConfig, intProcessID1
wscript.echo(intProcessID1)

(exitExplorer.vbs)
option explicit
Dim objFso, objWMIService, objStartup,  objConfig, objProcess, colProcess, strComputer, intProcessID

do while true
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process Where Name = 'explorer.exe'")

'kill explorer.exe
For Each objProcess in colProcess
objProcess.Terminate()
Next
loop


Men det virkede heller ikke, intProcessID blev bare null.

Nogen ideer?
Avatar billede jonashn Nybegynder
21. juli 2007 - 14:01 #1
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester