Truecrypt Automounter

  • Hy Leute,

    dieses Script habe ich ursprünglich geschrieben um eine Truecrypt Partition von einer USB-Platte /USB-Stick einfacher einzubinden. (Was jetz alles geht seht ihr in der VersionsInfo!)
    Danach wird automatisch Software von dieser Truecrypt Partition gestartet und über das TrayIcon kann man die Partition wieder aushängen. Hierbei werden automatisch alle von der Partition gestarteten Programme geschlossen.
    Inzwischen habe ichs schon öfter überarbeitet, jedoch sind einige Funktionen noch nicht ausgereift.

    Für Hilfe, Wünsche und Anregungen bin ich immer offen. :thumbup:

    Update vom 1. Dez.08:
    Aktuelle Version=0.0.0.69


    Hier die Funktionsweise:

    Spoiler anzeigen

    Nochmal wie des bei mir funktioniert:
    USB Festplatte angesteckt, den ordner truecrypt raufkopiert,Des Script (kompiliert oder nicht) ins rootverzeichniss der Platte kopieren, Automounter gestartet ---> Der erstellt jetz eine Beispieldatei mit dem Namen "Autorun.inf"

    Die muss man nun abändern (wurde auch missbraucht um meine ini einstellungen zu sichern) --> Es gibt wie bei Truecrypt den Modus eine Partition einzubinden oder ne Datei. Im Partitionsmodus muss man angeben welche partition eingebunden werden soll. z.B.2. Beim cotainer sollte es der relative pfad zur Containerdatei sein....

    Beim nächsten start fragt das Programm nur noch nach dem Passwort, alle anderen infos nimmt es aus der INF oder
    sucht sie sich selbst.
    Update: Ganze Festplatten oder Partitionen werden nun anhand einer ID erkannt. Diese könnt ihr mit dem Tool harddiskinfo herausfinden.
    (Zukünftig baue ich dafür eine GUI zum konfigurieren!)

    Nach dem mounten erstellt das Prog auf dem entschlüsselten laufwerk eine Datei mit dem namen autorun.ini. (Nur wenn Autorun=TRUE in der Autorun.inf eingetragen ist)
    Die dort eingetragenen Programme (relative Pfade) werden automatisch gestartet.

    Im TrayIcon (rechtsklick) gibts dann noch einen Checkdisk und eine Dismountfunktion die alle vom entschüsselten laufwerk geöffneten programme schliesst, befor das Laufwerk verschlüsselt oder gecheckt wird.

    Achso nochn Tipp: in der Autorun.inf unter [Settings] DEBUG=TRUE liefert eine gute Logdatei !!

    Hier der Quellcode:

    Spoiler anzeigen
    [autoit]


    #Region
    #AutoIt3Wrapper_Outfile=Automounter.exe
    #AutoIt3Wrapper_Compression=4
    #AutoIt3Wrapper_Res_Description=Autoencrypter für transportable Truecrypt Medien
    #AutoIt3Wrapper_Res_Fileversion=0.0.0.69
    #AutoIt3Wrapper_Res_FileVersion_AutoIncrement=y
    #AutoIt3Wrapper_Res_LegalCopyright=GPL
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Run_Tidy=y
    #EndRegion

    [/autoit] [autoit][/autoit] [autoit]

    ;Neme: Truecrypt Automounter
    ;Author: Merlink
    ;E-Mail: [email='Merlink@gmx.de'][/email]
    ;Quellcode: http://www.autoit.de/index.php?page=Thread&threadID=8625
    ;License: GPL
    ;
    ; This program is free software; you can redistribute it and/or modify
    ; it under the terms of the GNU General Public License as published by
    ; the Free Software Foundation; either version 2 of the License, or
    ; (at your option) any later version.
    ;
    ; This program is distributed in the hope that it will be useful,
    ; but WITHOUT ANY WARRANTY; without even the implied warranty of
    ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    ; GNU General Public License for more details.

    [/autoit] [autoit][/autoit] [autoit]

    ;Includes
    #include<Array.au3>
    #include<Constants.au3>
    #include<Date.au3>
    #include<EditConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<EditConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<Inet.au3>
    #include<Misc.au3>
    #include<String.au3>
    #include<WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;Disable Doublestart
    If _Singleton(@ScriptName, 1) = 0 Then
    MsgBox(0, "Anwendung wird wieder beendet.", "Die Anwendung wurde bereits einmal gestartet. Sollte diese Meldung ständig erscheinen, " & @CR & "starten Sie den PC neu und probieren es nochmal.")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;Define Global Variables
    Global $runningdrive = StringLeft(@ScriptDir, 2) & "\"
    Global $logfile = @ScriptDir & StringTrimRight(@ScriptName, 4) & ".log"
    Global $inifile1 = _ini(1)
    Global $debug = IniRead($inifile1, "SETTINGS", "DEBUG", "FALSE") ;Standart: DEBUG OFF
    FileDelete($logfile)
    _debug("Programname=" & @ScriptName)
    _debug("Programversion=" & FileGetVersion(@ScriptFullPath))
    _debug("Info: Runningdrive=" & $runningdrive)
    _debug("Info: Inifile1=" & $inifile1)
    Global $tcpath = _cleanpath(_findtruecrypt())
    Global $dimension = 20
    Global $drives[2][$dimension]

    [/autoit] [autoit][/autoit] [autoit]

    ;First actions:
    _dismount("all")
    _RefreshSystemTray()

    [/autoit] [autoit][/autoit] [autoit]

    ;Filling Array with Infos
    $drives[0][1] = 0
    $drives[0][2] = "Mountpoint"
    $drives[0][3] = "Mountmode"
    $drives[0][4] = "Keyfile"
    $drives[0][5] = "Password"

    [/autoit] [autoit][/autoit] [autoit]

    ;Start Mountloop
    Dim $count1 = 1
    While 1
    $INI = IniReadSection($inifile1, "Drive" & $count1)
    If @error Then ExitLoop
    _debug("break")
    _debug("*****Try to mount Drive" & $count1 & "*****")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Readout StandardDriveletter
    $arrayplace = _ArraySearch($INI, "StandardDriveLetter", 0, 0, 0, 1, 0)
    If @error Then
    _debug("Info: Standarddriveletter: Entry Not Found (using default=x:)")
    $Driveletter = _driveletter("x:")
    $drives[$count1][1] = $Driveletter
    Else
    $Driveletter = _driveletter($INI[$arrayplace][1])
    $drives[$count1][1] = $Driveletter
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;Ask for Password
    $arrayplace = _ArraySearch($INI, "PasswordRequired", 0, 0, 0, 1, 0)
    If @error Then
    $drives[$count1][5] = "OFF"
    _debug("Info: Password=OFF (Entry Not Found)")
    Else
    If $INI[$arrayplace][1] = "TRUE" Then
    _debug("Info: Password=ON")
    $password = _getpass()
    $drives[$count1][5] = "ON"
    Else
    $drives[$count1][5] = "OFF"
    _debug("Info: Password=OFF")
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;Search for Keyfile
    $arrayplace = _ArraySearch($INI, "Keyfile", 0, 0, 0, 1, 0)
    If @error Then
    _debug("Info: Keyfile=OFF (Entry Not Found)")
    $drives[$count1][4] = "OFF"
    Else
    $Keyfile = $INI[$arrayplace][1]
    If @error Then
    _debug("Info: Keyfile=OFF")
    $drives[$count1][4] = "OFF"
    Else
    _debug("Info: Keyfile=ON")
    $Keyfile = _findfile($Keyfile)
    ReDim $drives[$count1 + 1][$dimension]
    $drives[$count1][4] = $Keyfile
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;Checking for Mountmode
    $arrayplace = _ArraySearch($INI, "Mode", 0, 0, 0, 1, 0)
    If @error Then
    _debug("Mode is not defined, using Container as default!")
    $mode = "Container"
    Else
    $mode = $INI[$arrayplace][1]
    EndIf
    Select
    Case $mode = "Partition"

    $drives[$count1][3] = "Partition"
    ;Mounting Partition
    _debug("break")
    _debug("!Mode: PartitionMode")
    $Harddisk = "\Device\Harddisk" & _SignatureToHarddisk($INI[_ArraySearch($INI, "HarddiskID", 0, 0, 0, 1, 0)][1]) & "\Partition" & $INI[_ArraySearch($INI, "PartitionNumber", 0, 0, 0, 1, 0)][1]
    $drives[$count1][2] = $Harddisk
    $cmd = $tcpath & " /q /b /v " & $Harddisk & " /l " & $Driveletter
    If $drives[$count1][4] <> "OFF" Then $cmd = $cmd & " /k " & $Keyfile
    If $drives[$count1][5] = "ON" Then $cmd = $cmd & " /p " & $password
    Run($cmd, @TempDir)

    Case $mode = "Container"
    $drives[$count1][3] = "Container"
    ;Mounting File
    _debug("break")
    _debug("!Mode: ContainerMode")
    $Container = _findfile($INI[_ArraySearch($INI, "Containerfile", 0, 0, 0, 1, 0)][1])
    $drives[$count1][2] = $Container
    $cmd = $tcpath & " /q /b /v " & $Container & " /l " & $Driveletter
    If $drives[$count1][4] <> "OFF" Then $cmd = $cmd & " /k " & $Keyfile
    If $drives[$count1][5] = "ON" Then $cmd = $cmd & " /p " & $password
    Run($cmd, @TempDir)

    Case Else
    ;No Mountmode Defined
    MsgBox(0, "ERROR", "Mode=" & $mode & " sollte Partition oder Container sein!!")
    EndSelect

    [/autoit] [autoit][/autoit] [autoit]

    ;Checking for Securedrive
    Sleep(2000)
    $status = DriveStatus($Driveletter)
    _debug("break")
    _debug("Info: Securdrive status=" & $status)
    If $status = "READY" Then
    TrayTip("Status", "Mounted Successfully... ", 10, 1)
    $drives[$count1][0] = "OK"
    $drives[0][1] += 1
    Else
    ProcessClose("truecrypt.exe")
    MsgBox(0, "ERROR", "Auf das Laufwerk kann nicht zugegriffen werden!")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;Autorun
    $drives[0][6] = "Autorun"
    $arrayplace = _ArraySearch($INI, "Autorun", 0, 0, 0, 1, 0)
    If @error Then
    _debug("Info: Autorun=OFF (Entry Not Found)")
    $drives[$count1][6] = "OFF"
    Else
    $drives[$count1][6] = "ON"
    If $INI[$arrayplace][1] = "TRUE" Then
    $inifile2 = _ini(2)
    If $inifile2 = "Build" Then
    _debug("Autorun=OFF (Build new File)")
    Else
    _start($inifile2)
    EndIf
    Else
    _debug("Info: Autorun=OFF")
    EndIf
    EndIf
    $count1 += 1
    ReDim $drives[$count1 + 1][$dimension]
    $drives[0][0] = $count1
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    _debug("break")
    _debug("*****Entering Wait Mode*****")

    [/autoit] [autoit][/autoit] [autoit]

    ;Create Menue
    Opt("TrayMenuMode", 1)
    $i = 0
    While $i < $drives[0][0]
    If $drives[$i][0] = "OK" Then
    $drives[$i][10] = TrayCreateMenu("Laufwerk: " & $drives[$i][1])
    $drives[$i][11] = TrayCreateItem("Schliesse Laufwerk: " & $drives[$i][1], $drives[$i][10])
    $drives[$i][12] = TrayCreateItem("Überprüfe Laufwerk: " & $drives[$i][1], $drives[$i][10])
    $drives[$i][13] = TrayCreateItem("")
    EndIf
    $i += 1
    WEnd
    ;Static Commands
    $Dismount = TrayCreateItem("Alle Laufwerke verschlüsseln")

    [/autoit] [autoit][/autoit] [autoit]

    ;For Debug:
    ;_ArrayDisplay($drives)

    [/autoit] [autoit][/autoit] [autoit]

    ;Enter action Loop
    $i = 0
    $Msg = TrayGetMsg()
    While 1
    ;Reset Counter
    If $i = $drives[0][0] Then
    $i = 0
    $Msg = TrayGetMsg()
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;Exiting if no more mounted Drives
    If $drives[0][1] = 0 Then
    _debug("No more Mounted Drives! --->Exit")
    ExitLoop
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;Action: Dismount Drives
    If $Msg = $Dismount Then
    $i = 0
    ;Ends Tasks from all mounted Driveletters
    While 1
    If $i = $drives[0][0] Then ExitLoop
    If $drives[$i][0] = "OK" Then
    _debug("Info: Endtasks=" & $drives[$i][1])
    _endtasks($drives[$i][1])
    _RefreshSystemTray()
    EndIf
    $i += 1
    WEnd
    _dismount("all")
    ExitLoop
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;Action: Dismount Single Drive
    If $drives[$i][0] = "OK" Then
    If $Msg = $drives[$i][11] Then
    _debug("Info: Endtasks=" & $drives[$i][1])
    _endtasks($drives[$i][1])
    _dismount($drives[$i][1])
    TrayItemDelete($drives[$i][10])
    TrayItemDelete($drives[$i][13])
    $drives[0][1] -= 1
    $i = 0
    $Msg = TrayGetMsg()
    _RefreshSystemTray()
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;Action: Checkdisk on Single Drive
    If $Msg = $drives[$i][12] Then
    _debug("Info: Checkdisk=" & $drives[$i][1])
    _endtasks($drives[$i][1])
    _RefreshSystemTray()
    _checkdisk($drives[$i][1])
    _start(_cleanpath($drives[$i][1] & "autorun.ini"))
    Sleep(5000)
    $i = 0
    $Msg = TrayGetMsg()
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    $i += 1
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    _debug("*****Exiting*****")

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit] [autoit][/autoit] [autoit]

    ; ----------------------------------------------------------------------------
    ; Author: Merlink <[email='Merlink@gmx.de'][/email]>
    ;
    ; Script Function: Starting checkdisk
    ; ----------------------------------------------------------------------------
    Func _checkdisk($x)
    _debug("break")
    _debug("-->Enter: Checkdisk")
    FileDelete(@TempDir & "\checkdisk.txt")
    $part = "unknown"
    $type = "unknown"
    TrayTip("Status", "Starte: Checkdisk...", 10, 1)
    $cmd = @SystemDir & "\chkdsk.exe /f /x " & $x
    _debug($cmd)
    $PID = Run($cmd, @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
    While 1
    $line = StdoutRead($PID)
    If @error Then ExitLoop
    ConsoleWrite($line)
    If StringInStr($line, "NTFS") Then $type = "NTFS"
    If StringInStr($line, "FAT32") Then $type = "FAT32"
    If $type = "NTFS" Then
    If StringInStr($line, "Dateien") Then $part = "(1\3)"
    If StringInStr($line, "Indizes") Then $part = "(2\3)"
    If StringInStr($line, "Sicherheitsbeschreibungen") Then $part = "(3\3)"
    If $line <> "" Then TrayTip("Status: ", "Driveletter: " & $x & @CRLF & "Filesystem: " & $type & @CRLF & "Überprüfe: " & $part & @CRLF & @CRLF & $line, 10, 1)
    Else
    EndIf
    WEnd
    Sleep(3000)
    _debug("<--Exit: Checkdisk")
    EndFunc ;==>_checkdisk

    [/autoit] [autoit][/autoit] [autoit]

    ; ----------------------------------------------------------------------------
    ; Author: Merlink <[email='Merlink@gmx.de'][/email]>
    ;
    ; Script Function: Cleans Paths from wrong user Inputs
    ; ----------------------------------------------------------------------------
    Func _cleanpath($x)
    ConsoleWrite(@CR & "Cleanpath_Input: " & $x & @CR)
    If StringInStr($x, ":") Then $x = StringReplace($x, ":", ":\")
    While 1
    If Not StringInStr($x, "\\") Then ExitLoop
    $x = StringReplace($x, "\\", "\")
    WEnd
    While 1
    If Not StringInStr($x, "::") Then ExitLoop
    $x = StringReplace($x, "::", ":")
    WEnd
    ConsoleWrite("Cleanpath_Output: " & $x & @CR)
    Return $x
    EndFunc ;==>_cleanpath

    [/autoit] [autoit][/autoit] [autoit]

    ; ----------------------------------------------------------------------------
    ; Author: Merlink <[email='Merlink@gmx.de'][/email]>
    ;
    ; Script Function: Writimg debug Output to Logfile and to console
    ; ----------------------------------------------------------------------------
    Func _debug($x)
    If $debug = "TRUE" Then
    If $x = "break" Then
    FileWriteLine($logfile, @CRLF)
    ConsoleWrite(@CR)
    Else
    FileWriteLine($logfile, @HOUR & ":" & @MIN & ":" & @SEC & "= " & $x & @CRLF)
    ConsoleWrite($x & @CR)
    EndIf
    Else
    EndIf
    EndFunc ;==>_debug

    [/autoit] [autoit][/autoit] [autoit]

    ; ----------------------------------------------------------------------------
    ; Author: Merlink <[email='Merlink@gmx.de'][/email]>
    ;
    ; Script Function: Dismounts all Truecrypt Devices or a single Device
    ; ----------------------------------------------------------------------------
    Func _dismount($x)
    _debug("break")
    _debug("-->Enter: Dismount " & $x)
    Select
    Case $x = "all"
    TrayTip("Status", "Dimounting all Drives...", 5, 1)
    Run($tcpath & " /q /d /f")
    Sleep(2000)
    _debug("<--Exit: Dismount")
    Case Else
    _debug("break")
    _debug("-->Enter: Dismount")
    TrayTip("Status", "Dimounting: " & $x, 5, 1)
    Run($tcpath & " /q /f /d " & StringReplace($x, "\", ""))
    Sleep(2000)
    _debug("<--Exit: Dismount")
    EndSelect
    EndFunc ;==>_dismount

    [/autoit] [autoit][/autoit] [autoit]

    ; ----------------------------------------------------------------------------
    ; Author: Merlink <[email='Merlink@gmx.de'][/email]>
    ;
    ; Script Function: Checks if the Mount-driveletter is used by another partition
    ; if so it shows all free Drives to choose
    ; ----------------------------------------------------------------------------
    Func _driveletter($x)
    _debug("break")
    _debug("-->Enter: Driveletter")
    Local $dl
    TrayTip("Status", "Checking Driveletter... ", 10, 1)
    $status = DriveStatus($x)
    _debug("driveletterstatus: " & StringReplace($status, "INVALID", "FREE"))
    While $status <> "INVALID"
    $letters = StringSplit("A:|B:|C:|D:|E:|F:|G:|H:|I:|J:|K:|L:|M:|N:|O:|P:|Q:|R:|S:|T:|U:|V:|W:|X:|Y:|Z:", "|")
    $count = 1
    While $count <> $letters[0] + 1
    If DriveStatus($letters[$count]) = "INVALID" Then
    $dl = $dl & "|" & $letters[$count]
    Else
    EndIf
    $count += 1
    WEnd
    $dl2 = StringTrimLeft($dl, 1)
    $dl3 = StringTrimLeft($dl2, 3)
    $fdl = StringLeft($dl2, 2)
    GUICreate("Letter", 171, 111, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45)
    $Label_1 = GUICtrlCreateLabel("Laufwerksbuchstabe Besetzt!", 15, 8, 150, 20)
    $letter = GUICtrlCreateCombo($fdl, 60, 30, 50) ; create first item
    GUICtrlSetState(-1, $GUI_FOCUS)
    GUICtrlSetData(-1, $dl3, $x) ; add other item snd set a new default
    $Button_1 = GUICtrlCreateButton("&OK", 20, 60, 130, 30)
    GUICtrlSetState(-1, $GUI_DEFBUTTON)
    GUISetState()
    While 1
    $Msg = GUIGetMsg()
    Select
    Case $Msg = $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE)
    Exit
    Case $Msg = $Button_1
    $x = GUICtrlRead($letter)
    GUISetState(@SW_HIDE)
    ExitLoop
    EndSelect
    WEnd
    $status = DriveStatus($x)
    WEnd
    _debug("Driveletter:" & $x)
    _debug("<--Exit: Driveletter")
    Return $x
    EndFunc ;==>_driveletter

    [/autoit] [autoit][/autoit] [autoit]

    ; ----------------------------------------------------------------------------
    ; Author: Merlink <[email='Merlink@gmx.de'][/email]>
    ;
    ; Script Function: Ends Processes running from a specific Drive
    ; ----------------------------------------------------------------------------
    Func _endtasks($x)
    _debug("break")
    _debug("-->Enter: Endtasks")
    TrayTip("Status", "Beende Programme...", 10, 1)
    $list = ProcessList()
    $tmp = 0
    For $i = 1 To $list[0][0]
    $z = _ProcessGetLocation($list[$i][0])
    If StringLeft($z, 2) = $x Then
    $PID = $list[$i][1]
    $process = $list[$i][0]
    $p = ProcessClose($PID)
    _debug("Beende:" & $process & " PID:" & $PID)
    TrayTip("Status", "Beende: " & $process & "...", 10, 1)
    ProcessWaitClose($PID)
    EndIf
    Next
    _RefreshSystemTray()
    _debug("<--Exit: Endtasks")
    EndFunc ;==>_endtasks

    [/autoit] [autoit][/autoit] [autoit]

    ; ----------------------------------------------------------------------------
    ; Author: Merlink <[email='Merlink@gmx.de'][/email]>
    ;
    ; Script Function: Searches for Files on the System with relative Paths
    ; ----------------------------------------------------------------------------
    Func _findfile($x)
    _debug("break")
    _debug("-->Enter: Findfile")
    $accessdrives = DriveGetDrive("all")
    $count = 1
    While $count <> $accessdrives[0] + 1
    $file = _cleanpath($accessdrives[$count] & $x)
    If DriveStatus($accessdrives[$count]) = "READY" Then
    If FileExists($file) Then
    _debug("File Found: " & $file)
    _debug("<--Exit: Findfile")
    Return $file
    Else
    _debug($file & " Not Found")
    EndIf
    Else
    EndIf
    $count = $count + 1
    WEnd
    Return "ERROR"
    EndFunc ;==>_findfile

    [/autoit] [autoit][/autoit] [autoit]

    ; ----------------------------------------------------------------------------
    ; Author: Merlink <[email='Merlink@gmx.de'][/email]>
    ;
    ; Script Function: Searches the Truecrypt Executable
    ; ----------------------------------------------------------------------------
    Func _findtruecrypt()
    _debug("break")
    _debug("-->Enter: Findtruecrypt")
    Local $x = ""
    $x = @ScriptDir & "truecrypt.exe"
    If Not FileExists($x) Then
    $x = @ScriptDir & "truecrypt\truecrypt.exe"
    EndIf
    If Not FileExists($x) Then
    $version = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\TrueCrypt", "DisplayVersion")
    If @error = 0 Then
    _debug("Truecrypt is installed!")
    $x = StringSplit(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\TrueCrypt", "ModifyPath"), " ")
    $x = StringReplace($x[1], '"', '') & ".exe"
    EndIf
    Else
    EndIf
    If Not FileExists($x) Then
    MsgBox(0, "ERROR", "Truecrypt wurde nicht gefunden!" & @CRLF & @CRLF & "Bitte tragen Sie de Pfad in der INI ein" & @CRLF & "Bsp:TRUECRYPT=TrueCrypt\TrueCrypt.exe")
    _debug("Truecrypt: Not Found" & @CRLF & "Pfad:" & $x)
    Exit
    Else
    _debug("Truecrypt: " & $x)
    _debug("Version: " & FileGetVersion($x))
    EndIf
    _debug("<--Exit: Findtruecrypt")
    Return $x
    EndFunc ;==>_findtruecrypt

    [/autoit] [autoit][/autoit] [autoit]

    ; ----------------------------------------------------------------------------
    ; Author: Merlink <[email='Merlink@gmx.de'][/email]>
    ;
    ; Script Function: Password Question
    ; ----------------------------------------------------------------------------
    Func _getpass()
    _debug("break")
    _debug("-->Enter: Passwort")
    TrayTip("Status", "Password...", 10, 1)
    GUICreate("Bitte Passwort eingeben für Drive" & $count1, 342, 106, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45)
    $Button_1 = GUICtrlCreateButton("&OK", 20, 60, 140, 30)
    GUICtrlSetState(-1, $GUI_DEFBUTTON)
    $Button_2 = GUICtrlCreateButton("&Beenden", 180, 60, 140, 30)
    $Input_1 = GUICtrlCreateInput("", 20, 15, 300, 20, $ES_PASSWORD)
    GUICtrlSetState(-1, $GUI_FOCUS)
    GUISetState()
    While 1
    $Msg = GUIGetMsg()
    Select
    Case $Msg = $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE)
    Exit
    Case $Msg = $Button_2
    GUISetState(@SW_HIDE)
    Exit
    Case $Msg = $Button_1
    $pass = GUICtrlRead($Input_1, 0)
    If Not $pass = "" Then
    ExitLoop
    Else
    MsgBox(0, "ERROR", "Das Passwort darf nicht leer sein!")
    EndIf
    EndSelect
    WEnd
    GUISetState(@SW_HIDE)
    _debug("<--Exit: Passwort")
    Return $pass
    EndFunc ;==>_getpass

    [/autoit] [autoit][/autoit] [autoit]

    ; ----------------------------------------------------------------------------
    ; Author: Merlink <[email='Merlink@gmx.de'][/email]>
    ;
    ; Script Function: Searches,Creations and Updates for INI-Files
    ; ----------------------------------------------------------------------------
    Func _ini($x)
    Select
    Case $x = 1
    ConsoleWrite(@CR & @HOUR & ":" & @MIN & ":" & @SEC & "= " & "-->Enter: Findini " & $x & @CR)
    $INI = StringTrimRight(@ScriptFullPath, 4) & ".ini"
    If Not FileExists($INI) Then
    $INI = $runningdrive & "AUTORUN.INF"
    EndIf
    If Not FileExists($INI) Then
    ;Here we need a Gui
    ConsoleWrite(@CR & @HOUR & ":" & @MIN & ":" & @SEC & "= " & "Building: " & $INI & @CR)
    ;Autorun
    IniWrite($INI, "Autorun", "OPEN", StringTrimLeft(@ScriptFullPath, 3))
    IniWrite($INI, "Autorun", "ICON", StringTrimLeft(@ScriptFullPath, 3))
    IniWrite($INI, "Autorun", "Action", "Entschlüsseln")
    IniWrite($INI, "Autorun", "UseAutoPlay", "1")
    ;Settings
    IniWrite($INI, "Settings", "Debug", "TRUE")
    ;Drive1 in Partitionmode
    IniWrite($INI, "Drive1", "Mode", "Partition")
    IniWrite($INI, "Drive1", "PasswordRequired", "TRUE")
    IniWrite($INI, "Drive1", "StandardDriveLetter", "X:")
    IniWrite($INI, "Drive1", "Autorun", "TRUE")
    IniWrite($INI, "Drive1", "PartitionNumber", "2")
    IniWrite($INI, "Drive1", "Keyfile", "\samplekeyfile")
    IniWrite($INI, "Drive1", "HarddiskID", "216543464")
    ;Drive1 in Containermode
    IniWrite($INI, "Drive2", "Mode", "Container")
    IniWrite($INI, "Drive2", "PasswordRequired", "TRUE")
    IniWrite($INI, "Drive2", "StandardDriveLetter", "Y:")
    IniWrite($INI, "Drive2", "Autorun", "False")
    IniWrite($INI, "Drive2", "Keyfile", "\samplekeyfile")
    IniWrite($INI, "Drive2", "Containerfile", "test.container")
    MsgBox(0, "INFO", "Die Einstellungsdatei: " & $INI & @CRLF & " musste neu erstellt werden." & @CRLF & "Bitte ändern Sie diese Datei nach Ihren wünschen ab!")
    If FileExists($INI) Then
    Run("notepad.exe " & $INI, @TempDir)
    ConsoleWrite(@HOUR & ":" & @MIN & ":" & @SEC & "= " & "<--Exit: Findini " & $x & @CR)
    Exit
    Else
    MsgBox(0, "ERROR", "INI-File: " & $INI & " konnte nicht erstellt werden!")
    Exit
    EndIf
    Else
    ConsoleWrite(@HOUR & ":" & @MIN & ":" & @SEC & "= " & "<--Exit: Findini " & $x & @CR)
    Return $INI
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Case $x = 2
    $INI = $Driveletter & "\autorun.ini"
    _debug("break")
    _debug("-->Enter: INI " & $x)
    If Not FileExists($INI) Then
    _debug("Building: " & $INI)
    ;Here we need a Gui
    IniWrite($INI, "Settins", "KillExplorer", "FALSE")
    IniWrite($INI, "Program1", "KillProcessIfExist", "FALSE")
    IniWrite($INI, "Program1", "Program", "\beispiel.exe")
    IniWrite($INI, "Program2", "KillProcessIfExist", "TRUE")
    IniWrite($INI, "Program2", "Program", "\beispielordner\beispiel.exe")
    If FileExists($INI) Then
    MsgBox(0, "INFO", "Die Einstellungsdatei: " & $INI & @CRLF & " musste neu erstellt werden." & @CRLF & "Bitte ändern Sie diese Datei nach Ihren wünschen ab!")
    Run("notepad.exe " & $INI, @TempDir)
    _debug("<--Exit: Iniwrite " & $x)
    Return "Build"
    Else
    MsgBox(0, "ERROR", "INI-File: " & $INI & " konnte nicht erstellt werden!")
    Exit
    EndIf
    Else
    _debug("Info: Inifile2=" & $INI)
    _debug("<--Exit: Findini " & $x)
    Return $INI
    EndIf
    EndSelect
    EndFunc ;==>_ini

    [/autoit] [autoit][/autoit] [autoit]

    ; ----------------------------------------------------------------------------
    ; Author: Unknown
    ;
    ; Script Function: Finds Processes running from a specific Drive
    ; ----------------------------------------------------------------------------
    Func _ProcessGetLocation($sProc = @ScriptFullPath)
    Local $iPID = ProcessExists($sProc)
    If $iPID = 0 Then Return SetError(1, 0, -1)
    Local $aProc = DllCall('kernel32.dll', 'hwnd', 'OpenProcess', 'int', BitOR(0x0400, 0x0010), 'int', 0, 'int', $iPID)
    If $aProc[0] = 0 Then Return SetError(1, 0, -1)
    Local $vStruct = DllStructCreate('int[1024]')
    DllCall('psapi.dll', 'int', 'EnumProcessModules', 'hwnd', $aProc[0], 'ptr', DllStructGetPtr($vStruct), 'int', DllStructGetSize($vStruct), 'int*', 0)
    Local $aReturn = DllCall('psapi.dll', 'int', 'GetModuleFileNameEx', 'hwnd', $aProc[0], 'int', DllStructGetData($vStruct, 1), 'str', '', 'int', 2048)
    If StringLen($aReturn[3]) = 0 Then Return SetError(2, 0, '')
    Return $aReturn[3]
    EndFunc ;==>_ProcessGetLocation

    [/autoit] [autoit][/autoit] [autoit]

    ; ===================================================================
    ; Author: Valik
    ; Got from: http://www.autoitscript.com/forum/index.php?showtopic=7404&hl=
    ; Script Function: Refreshs the System TrayIcons
    ; ===================================================================
    Func _RefreshSystemTray($nDelay = 1000)
    ; Save Opt settings
    Local $oldMatchMode = Opt("WinTitleMatchMode", 4)
    Local $oldChildMode = Opt("WinSearchChildren", 1)
    Local $error = 0
    Do; Pseudo loop
    Local $hWnd = WinGetHandle("classname=TrayNotifyWnd")
    If @error Then
    $error = 1
    ExitLoop
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Local $hControl = ControlGetHandle($hWnd, "", "Button1")

    [/autoit] [autoit][/autoit] [autoit]

    ; We're on XP and the Hide Inactive Icons button is there, so expand it
    If $hControl <> "" And ControlCommand($hWnd, "", $hControl, "IsVisible") Then
    ControlClick($hWnd, "", $hControl)
    Sleep($nDelay)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Local $posStart = MouseGetPos()
    Local $posWin = WinGetPos($hWnd)

    [/autoit] [autoit][/autoit] [autoit]

    Local $y = $posWin[1]
    While $y < $posWin[3] + $posWin[1]
    Local $x = $posWin[0]
    While $x < $posWin[2] + $posWin[0]
    DllCall("user32.dll", "int", "SetCursorPos", "int", $x, "int", $y)
    If @error Then
    $error = 2
    ExitLoop 3; Jump out of While/While/Do
    EndIf
    $x = $x + 8
    WEnd
    $y = $y + 8
    WEnd
    DllCall("user32.dll", "int", "SetCursorPos", "int", $posStart[0], "int", $posStart[1])
    ; We're on XP so we need to hide the inactive icons again.
    If $hControl <> "" And ControlCommand($hWnd, "", $hControl, "IsVisible") Then
    ControlClick($hWnd, "", $hControl)
    EndIf
    Until 1

    [/autoit] [autoit][/autoit] [autoit]

    ; Restore Opt settings
    Opt("WinTitleMatchMode", $oldMatchMode)
    Opt("WinSearchChildren", $oldChildMode)
    SetError($error)
    EndFunc ;==>_RefreshSystemTray

    [/autoit] [autoit][/autoit] [autoit]

    ; ----------------------------------------------------------------------------
    ; Author: Merlink <[email='Merlink@gmx.de'][/email]>
    ;
    ; Script Function: Harddisk Info to Array
    ; $output[1]=Harddisknumber $output[2]=Harddiskmodel $output[3]=HarddiskSignature
    ; ----------------------------------------------------------------------------
    Func _SignatureToHarddisk($x)
    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = "localhost"
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_DiskDrive", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    $i = 0
    If IsObj($colItems) Then
    For $objItem In $colItems
    If $x = $objItem.Signature Then Return StringRight($objItem.DeviceID, 1)
    $i += 1
    Next
    Else
    MsgBox(0, "WMI Output", "No WMI Objects Found for class: " & "Win32_LogicalDiskToPartition")
    Exit
    EndIf
    EndFunc ;==>_SignatureToHarddisk

    [/autoit] [autoit][/autoit] [autoit]

    ; ----------------------------------------------------------------------------
    ; Author: Merlink <[email='Merlink@gmx.de'][/email]>
    ;
    ; Script Function: Starts all Programs in an INI-File
    ; ----------------------------------------------------------------------------
    Func _start($x)
    _debug("-->Enter: Start " & $x)
    $i = 1
    While 1
    $INI = IniReadSection($x, "Program" & $i)
    If @error Then ExitLoop

    [/autoit] [autoit][/autoit] [autoit]

    $exec = _cleanpath($Driveletter & $INI[_ArraySearch($INI, "Program", 0, 0, 0, 1, 0)][1])
    _debug($exec)
    If FileExists($exec) Then
    _debug("Starting: " & $exec)
    TrayTip("Status", "starting: " & $exec, 10, 1)
    Run($exec)
    Sleep(1000)
    Else
    _debug("Program: " & $exec & " not found!")
    EndIf
    $i += 1
    WEnd
    _debug("<---Exit: Start")
    EndFunc ;==>_start

    [/autoit]


    Hier giebts noch die aktuellen Versionsinfos:

    Spoiler anzeigen

    Update vom 14. Nov.08:
    Aktuelle Version=0.0.0.33

    -Bugfix: Die inifile 1 wurde nicht korrekt erstellt
    -Installierte Version von Truecrypt wird nun erkannt und genutzt
    Überarbeitung der Log-ausgabe

    Update vom 15. Nov.08:
    Aktuelle Version=0.0.0.41

    -Überarbeitung der Funktion _findkeyfile: Die Keyfile wird nun auf allen zuzgreifbaren Laufwerken gesucht!
    -Änderung der Autorun.inf: Mit PASSWORDREQUIRED=FALSE kann man die Passwortabfrage abschalten.
    (Für Leute die nur mit Keyfiles mounten)
    Bugfix: Es wurde immer eine Installierte Truecrypt Version gefunden

    Update vom 23. Nov.08:
    Aktuelle Version=0.0.0.66

    -Komplette Überarbeitung ---> Jetzt kann man mehrere Truecrypt Volumes gleichzeitig einbinden lassen!
    -Für jeden Container giebt es jetzt eine eigene Dismount-funktion im Menü. (Ist noch ein wenig Buggy, wenn ich Zeit finde werd ichs fixen)
    -Für jedes Volume giebt es einige Parameter (siehe in der beispiel-Autorun.inf)
    -Jetzt werden Keyfiles und Containerfiles auf dem kompletten System gesucht und genutzt--> Ihr solltet eure Dateien nicht wie bereits existierende Systemdateien benennen! siehe: "Func _findfile"
    -Statt gleich die Installierte Version von Truecrypt zu nutzen werden die Portable Versionen in den Pfaden .\truecrypt.exe und
    .\truecrypt\truecrypt.exe bevorzugt! -->Weniger kompatibilitätsprobleme!
    -Die Funktion _cleanpath sorgt nun für Fehlerbehebung bei falschen INI-Einträgen!

    Update vom 27. Nov.08:
    Aktuelle Version=0.0.0.67

    -Komplette Neustrukturierung des Tray-Menü Codes -->Es treten dort keine Fehler mehr auf!
    -In dem Array "$drives" stehen nun alle gesammelten Informationen über die gemounteten Laufwerke drin.

    Update vom 1. Dez.08:
    Aktuelle Version=0.0.0.69

    -Bugfix: Undeklarierte Variable wenn man den eintrag Keyfile=... weglässt


    Bekannte Bugs:

    Spoiler anzeigen


    none

    Wünsche und Anregungen:

    Spoiler anzeigen


    1. Eine ordentliche Versionsüberprüfung von Truecrypt! (Damit kein uraltes Truecrypt den aktuellen container mounted)
    2. Hidden Volumes einbinden
    3. GUI zur Konfiguration der Autorun.inf fehlt leider noch!!

    Hier giebts Das Script kompiliert!
    CleanScript_vs_Au3toolkit_2008-01-16.pdf
    Und zur Definition der Harddisk-ID braucht ihr Das hier:
    (Wenn ich zeit finde wirds integriert mit ner angenehmen GUI)

    43 Mal editiert, zuletzt von Merlink (4. Dezember 2008 um 02:48)

  • läuft bei mir nicht. Er kann Truecrypt nicht finden, obwohl installiert. (aktuellste version)
    Aber hört sich gut an, weil das einbinden der Truecrypt container schon leichter gehen könnte.

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Das Script ist für Portable Laufwerke gedacht --> Truecrypt sollte sich im selben Verzeichniss oder im Verzeichniss "root:\truecrypt" befinden! thx für den test

    Siehe Func _findtruecrypt($x)

    Einmal editiert, zuletzt von Merlink (14. November 2008 um 08:53)

  • Herzlich willkommen erstmal..
    Jetzt erst bemerkt erster Beitrag... die meisten Fragen erstmal etwas aber das hier ist wirklich eine super Idee !! :thumbup:

    viel Spaß !

    Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Thanx franzp, ich hoffe das ganze wird noch etwas ausgereifter aber es sollte bereits funktionieren.

    Zukünftig will ich noch ein Menü einbauen wie im Programm Pstart (ev. sogar die selbe XML Nutzen) undn paar kleinigkeiten...

    aber im moment mach ich noch bugfixes (und mit Variben Deklinieren hab ichs auch nich so). :rock:

    6 Mal editiert, zuletzt von Merlink (15. November 2008 um 15:32)

  • Herzlich Willkommen,

    ich finde Du hast da ein interessantes Projekt.
    Deine Ausführungen aus Post #5 würde ich in einem Spoiler in Post #1 unterbringen.

    Zur Sache:

    Ich weiß nicht, ob man Truecrypt in der Registrierung auslesen kann :?:
    Auf jeden Fall möglich, ist die Abfrage nach der Existenz und hier bietet sich eine Pfadeingabe durch den Nutzer an. Allerdings nur bei „If Not FileExists($Truecrypt) Then“. ;)

    Viel Erfolg ! ^^

  • Danke für die Anregung RR04,

    Mit der aktuellen Version des Scriptes habe ich den Truecryptpfad aus den "Windows Uninstall Informationen" herausgezogen.

    Was momentan noch fehlt ist eine ordentliche Versionsüberprüfung!
    Wir wollen ja nicht dass eine uralte Truecryptversion unseren neuen Conainer mountet!

    Als nächstes habe ich angefragt, ob ich das Script Computer-Info mit einbauen kann!


    Macht weiter so! :thumbup:

    3 Mal editiert, zuletzt von Merlink (15. November 2008 um 19:44)

  • Hi,
    habe den Container aufm usb stick. Und das kompilierte Programm auch.. Er erzeugt noch die .inf und dann kommt:

    Zitat


    AutoIT Error
    Line -1:

    Error: Variable used without being declared...

    nur zur Info... Die Idee finde ich immernoch toll. Ich teste gerne die nächsten Versionen :D

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Danke für den Test!

    Bin grad noch bei ner kompletten Überarbeitung!!!

    Bin hoffentlich Montag fertig. Dann wirds noch ne ecke Professioneller!

    Mann kann dann automatisch mehrere laufwerke und container mounten lassen. ;)

    Keine Angst es geht weiter!

    Hast du die aktuelle version benutzt?
    Starte das Script mal aus Scite heraus, dann bekommst du auch die Zeilennummer des Fehlers ausgespuckt!
    Wurde eine Log-Datei geschrieben?

    Einmal editiert, zuletzt von Merlink (22. November 2008 um 02:28)

  • ja hatte die aktuelle getestet. Allerdings nutze ich Container ohne key File und keine Partitionen. Und Der Laufwerksbuchstabe ist T:. Kann es damit zusammen hängen? Ich teste die nächste Version auch gerne.. Nur zum reinlesen in den Quelltext habe ich leider keine Zeit.

    schönes WE.

    Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Jo es wird langsam besser!

    Die neue Version 0.0.0.66 is oben! ;)
    ***Achtung*** Ihr solltet die "Autorun.inf und die Autorun.ini neu erstellen lassen, da der Aufbau sich geändert hat!

    Wenn du in der Autorun.inf den Eintrag "Keyfile=..." löscht wird ohne Keyfile gemountet. Dann sollte aber zwingend "PasswordRequired=TRUE" eingetragen sein!

    Viel Spass
    Merlink

    2 Mal editiert, zuletzt von Merlink (23. November 2008 um 22:42)

  • hi,

    ich wollte es nochmal testen. Aber ich bekomme es einfach nicht hin, dass er mir den COntainer öffnet.

    Wie muß die autorun.inf aussehen, um einen Container namens test als Laufwerk T: zu mounten?

    vielen Dank Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Das müsste so aussehen:

    [AutoRun]
    Open=Automounter.exe
    Icon=Automounter.exe
    Action=Entschlüsseln
    UseAutoPlay=1

    [SETTINGS]
    DEBUG=TRUE

    [Drive1]
    Mode=Container
    PasswordRequired=TRUE
    StandardDriveLetter=T:
    CONTAINERFILE=test

    viel Glück!

  • Danke,

    leider geht das bei mir nicht...

    Fehler wie gehabt

    Spoiler anzeigen

    AutoIT Error
    Line -1:

    Error: Variable used without being declared...

    Logfile:

    Spoiler anzeigen

    17:05:13= Programname=Automounter.exe
    17:05:14= Programversion=0.0.0.67
    17:05:14= Info: Runningdrive=G:\
    17:05:14= Info: Inifile1=G:\AUTORUN.INF

    17:05:14= -->Enter: Findtruecrypt
    17:05:14= Truecrypt is installed!
    17:05:14= Truecrypt: C:\Programme\TrueCrypt\TrueCrypt.exe
    17:05:14= Version: 6.0.1.0
    17:05:14= <--Exit: Findtruecrypt

    17:05:14= -->Enter: Dismount all
    17:05:16= <--Exit: Dismount

    17:05:17= *****Try to mount Drive1*****

    17:05:17= -->Enter: Driveletter
    17:05:17= driveletterstatus: FREE
    17:05:17= Driveletter:T:
    17:05:17= <--Exit: Driveletter
    17:05:17= Info: Password=ON

    17:05:17= -->Enter: Passwort
    17:05:20= <--Exit: Passwort
    17:05:20= Info: Keyfile=OFF (Entry Not Found)

    17:05:20= !Mode: ContainerMode

    17:05:20= -->Enter: Findfile
    17:05:21= c:\test Not Found
    17:05:21= d:\test Not Found
    17:05:21= f:\test Not Found
    17:05:21= File Found: g:\test
    17:05:21= <--Exit: Findfile

    Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • OK habs gfunden, hab für einen Fall die Variable $keyfile vergessen zu deklarieren!
    War nochn überrest von der alten Version.

    Da hatte ich noch kein Array.

    THX für den Test ich hoff etz klapts.


    Aso wenn du Scite nutzt bekommst wenigstens ne zeilenangabe der undeklarierten Variable.

    Einmal editiert, zuletzt von Merlink (1. Dezember 2008 um 23:15)

  • cool jetzt klappt´s wunderbar. :thumbup:
    Wundert mich nur warum das Script nach dem Mounten noch läuft?? Hat doch nach dem Mount seinen Dienst getan :)

    Der "Checkdisk" ist zwar ganz nett, aber er zeigt leider kein Ergebnis nachdem er fertig ist. Ist das so gewollt?

    Habe schon zwei Anwender, die das Programm nutzen...

    schöne Grüße

    Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Na super i h hab einen Kumpel der hat 4 verschlüsselte platten - zum testen und der is immernoch zu faul!!
    Naja wer lieber 12 knöpfe drückt!

    Aber ich finds saucool das ich wenigstens einen mitstreiter hab! :thumbup:

    Sag deinen Kumpels das noch einiges an updates folgen werden. (ich liebe dieses Projekt)

    Aso des Script soll laufen bis alle Laufwerke umounted sind! (action loop) Das heist im notfall wird immer die Opion "Dismount All" zur verfügung stehen!!!!!
    Ok- Es hilft wenn man die Tray Informationen nicht über win**** unterdrück. Dort werden die aktuellen Infos ausgegeben.

    Ausserdem sollen zukünftig Programme aus dem Tray gestartet werden können. Jedoch kann ich auf wusch auch noch andere optionen in die ini aufnehmen (bsp: onlymount=true). Wie gesagt für Anregungen bin ich immer offen!


    Übrigens die erste apha version wird erst 0.1xxx sein. Ich nehme mir gern Zeit zum testen.

    Sorry bin Saubesoffen ?( ?( ?(

    Also das nächste upate steht schon und kommt warscheinlich morgen on!!!! -0.0.0.70+
    =einiges an code wird verkleinert (sorry es giebt nur noch des array "drives")
    =natürlich einiges an bugfixes (ich hoff ich produzier nich wieder welche) /wer sich nicht mehr auf den beinen halten kann soll programieren!
    ach nur als info ich hatte noch nie "Programierunterricht" nichtmal internet als ich das Projekt begonnen hab.
    also lest quellcode solang er frei ist!!!


    THX an FRANZP

    10 Mal editiert, zuletzt von Merlink (4. Dezember 2008 um 03:11)