1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Curtys

Beiträge von Curtys

  • Outlook automatisierung mit .exe kompilierung

    • Curtys
    • 28. August 2014 um 08:10

    Hallo,


    vielen Dank für die Hinweise, werd das ganze so umsetzten.

  • Outlook automatisierung mit .exe kompilierung

    • Curtys
    • 27. August 2014 um 10:19

    Danke für die Antwort,

    habe das Script jetzt wie empfohlen umgebaut, funktioniert jetzt auch ganz gut. Nur das Masterpasswort zum Entschlüsseln muss ja auch in beiden Exe sein. Oder sehe ich das falsch?

    mit dieser Funktion erstelle ich die Dateien aus den Eingaben von einem GUI:

    Spoiler anzeigen
    [autoit]


    func encryptFile()
    ; die Datei C:\admin\Outlook\User.txt wird erstellt und mit dem eingegebenen Benutzernamen befüllt
    $fileDeCryptUser = "C:\admin\Outlook\User.txt"
    FileOpen ($fileDeCryptUser, 2)
    FileWrite ($fileDeCryptUser, GUICtrlRead($inputUser))
    FileClose ($fileDeCryptUser)
    ; selbes mit KW.txt
    $fileDeCryptKW = "C:\admin\Outlook\KW.txt"
    FileOpen ($fileDeCryptKW, 2)
    FileWrite ($fileDeCryptKW, GUICtrlRead($inputPW))
    FileClose ($fileDeCryptKW)
    ; die Dateien werden mit RC4 und dem Kennwort xxxx verschlüsselt und unter C:\admin\Outlook\Encrypt abgelegt, wo sie später von der OutlookExe gelesen werden
    _Crypt_EncryptFile($fileDeCryptUser, "C:\admin\Outlook\Encrypt\User.txt", "PasswortZumVerschlüsseln", $CALG_RC4)
    _Crypt_EncryptFile($fileDeCryptKW, "C:\admin\Outlook\Encrypt\KW.txt", "PasswortZumVerschlüsseln", $CALG_RC4)
    ; die Dateien mit den Benutzerangaben im Klartext werden gelöscht
    FileDelete ($fileDeCryptUser)
    FileDelete ($fileDeCryptKW)
    EndFunc

    [/autoit]


    und so werden sie wieder von der anderen Exe verarbeitet:

    Spoiler anzeigen
    [autoit]


    $UserEncrypt = FileRead ("C:\Admin\Encrypt\user.txt")
    $user = BinaryToString(_Crypt_DecryptData($UserEncrypt, "PasswortZumVerschlüsseln",$CALG_RC4))
    $kwEncrypt = FileRead ("C:\Admin\Encrypt\kw.txt")
    $kw = BinaryToString(_Crypt_DecryptData($kwEncrypt, "PasswortZumVerschlüsseln", $CALG_RC4))

    [/autoit]

    Kann ich das mit dem Masterpasswort auch anders Lösen? So ist das PW ja in beiden EXE´s. Für einen evtl. Angreifer ja sehr leicht zu durchschauen.

    Und zum Thema PW speichern: im Netz findet man haufenweise solche Probleme aber nicht viele Lösungen, wahrscheinlich liegts am Autodiscover oder am Trust. Aber unser Netzwerkadmin ist im Moment ziemlich ausgelastet und kann der Sache nicht genau auf den Grund gehen. Solange muss es halt mit der gebastelten Lösung gehen.

  • Outlook automatisierung mit .exe kompilierung

    • Curtys
    • 22. August 2014 um 11:13

    Hallo allerseits,


    ich habe folgende Problem und hoffe, ihr könnt mir helfen.

    Wir sind jetzt zwecks Domänenzusammenführung mit unserem Exchange Server auf eine andere Domäne als auf unserem Active Directory umgezogen. Das AD folgt erst in ca. 2 Jahren. Solange unsere User jetzt in 2 Domänen hängen, kommt bei jedem Outlook Start die Abfrage wegen Kennwort und Benutzername. Die Passwort speichern Funktion von Windows ist eher sehr unzuverlässig. die geht 3 mal und 2 mal nicht...

    Also hab ich ein Programm geschrieben, das ich an die User weitergebe. Das Programm macht dann folgendes:

    -einen Ordner unter C:/admin erstellen

    -Aut2Exe reinkopieren (das vorher schon per Fileinstall eingebunden war)

    -eine GUI erstellen, wo der Benutzer seine Anmeldedaten eingeben kann

    -Aus diesen Daten dann eine .au3 file erstellen

    -diese File dann per Aut2Exe in eine .exe umwandeln.

    Diese Exe sollte dann Outlook aufrufen, bleibt im Hintergrund in einer Schleife und gibt, falls das Abfragefenster kommt, die Anmeldeinfos ein.

    Das klappt auch alles ganz gut, nur beim Kompilieren kommt ab und zu der Fehler Unable to open the Script File. Wenn ich das ganze dann auf einem anderen Rechner versuche, klappt es natürlich. Bei Win XP hat es bis jetzt immer funktioniert. Nur Win7 bereitet ab und zu Probleme. Kann jedoch leider nicht sagen woran genau es liegt. Einen Fehler im Script schließe ich eigentlich aus, da es ja meistens funktioniert.

    Muss ich bei Windows 7 weiter Parameter an den Kompiler eingeben oder gibt es sogar eine bessere Möglichkeit und auf einem Rechner wo kein AutoIT installiert ist, eine Exe zu erstellen und ich bin auf dem völlig falschen Lösungsweg?

    Danke schon mal für eure Hilfe.

    Spoiler anzeigen


    Die auskommentieren Bereiche könnt ihr einfach Ignorieren, da muss ich noch was umschreiben.


    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=outlook.ico
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <file.au3>
    #include <comboconstants.au3>
    #include <windowsconstants.au3>
    #include <guiconstantsex.au3>
    ;----------------------------------Variablen------------------------------------------
    Global $Ordner = "c:\admin\autoit_Outlook"
    DirCreate($Ordner) ;ordner anlegen
    Global $file = FileOpen($Ordner & "unkompiled.au3", 10)
    ;Global $Wartezeit = 60
    ;----------------------------------Variablen Ende------------------------------------------
    ;----------------------------------Dateien zum kompilieren kopieren------------------------------------------
    FileInstall("C:\Daten\ScriptingProgrammierung\autoit\AutoIT_Outlook\Aut2exe.exe", $Ordner & "aut2exe.exe", 1)
    FileInstall("C:\Daten\ScriptingProgrammierung\autoit\AutoIT_Outlook\OUTLOOK_2007.ico", $Ordner & "OUTLOOK_2007.ico", 1)
    FileInstall("C:\Daten\ScriptingProgrammierung\autoit\AutoIT_Outlook\OUTLOOK_2010.ico", $Ordner & "OUTLOOK_2010.ico", 1)
    ;----------------------------------------------------------------------------------------------
    ;----------------------------------GUI Erstellung------------------------------------------
    $gui = GUICreate("neue Outlook.exe erstellen", 500,250)
    $combo = GUICtrlCreateCombo("Windows7 - Outlook 2010", 270, 30, 200, 25, BitOR($cbs_dropdownlist, $cbs_autohscroll, $ws_vscroll))
    GUICtrlSetData(-1, "win XP - Outlook2010|Win XP oder Win 7 - outlook 2007")
    $labelCombo = GUICtrlCreateLabel("Windows/Outlook kombination auswählen:", 20, 30, 220, 25)
    $labelUser = GUICtrlCreateLabel("Benutzername eingeben:", 20, 60, 200, 25)
    $inputUser = GUICtrlCreateInput("", 270, 60, 200, 25)
    $labelPW = GUICtrlCreateLabel("Kennwort eingeben", 20, 90, 200, 25)
    $inputPW = GUICtrlCreateInput("", 270, 90, 200, 25, 0x0020)
    $btnStart = GUICtrlCreateButton("Start", 225, 130, 50, 25)
    GUISetState(@SW_SHOW)
    ;----------------------------------Ende GUI Erstellung------------------------------------------
    ;----------------------------------Hauptschleife------------------------------------------
    While True
    $msg = GUIGetMsg()
    Switch $msg
    Case -3 ;event wird über x geschlossen
    Exit
    Case $btnStart
    $combotext = GUICtrlRead($combo)
    Switch $combotext
    Case ("Windows7 - Outlook 2010")
    win7_out2010()
    kompile2010()
    info2()
    Sleep(2000)
    info3()
    exekopie()
    Sleep (2000)
    ;delete()
    ;InfoMsg()
    Exit
    Case ("win XP - Outlook2010")
    winXP_out2010()
    kompile2010()
    info2()
    Sleep(2000)
    info3()
    exekopie()
    Sleep (2000)
    ;delete()
    ;InfoMsg()
    Exit
    Case ("Win XP oder Win 7 - outlook 2007")
    Out2007()
    kompile2007()
    info2()
    Sleep(2000)
    info3()
    exekopie()
    Sleep (2000)
    ;delete()
    ;InfoMsg()
    Exit
    #cs
    case ("Outlook Web Access")
    OutlookWebAccess()
    kompile2010()
    info2()
    Sleep(2000)
    info3()
    exekopie()
    Sleep (2000)
    ;delete()
    ;InfoMsg()
    Exit
    #ce
    EndSwitch
    EndSwitch
    WEnd
    ;---------------------------------Hauptschleife Ende----------------------------------------
    ;----------------------------------Funktionen----------------------------------------------------
    Func win7_out2010()
    $user = GUICtrlRead($inputUser)
    $pw = GUICtrlRead($inputPW)
    FileWrite($file, "Opt('WinDetectHiddenText',1)"& @CRLF)
    FileWrite($file, "opt('SendKeyDelay',30)"& @CRLF)
    FileWrite($file, "ShellExecute (@ProgramFilesDir&'\Microsoft Office\Office14\outlook.exe')" & @CRLF)
    FileWrite($file, "do"& @CRLF)
    FileWrite($file, "if WinExists ('Windows-Sicherheit','Anmeldedaten speiche') Then"& @CRLF)
    FileWrite($file, "sleep (200)"& @CRLF)
    FileWrite($file, "Send('{DOWN}{DOWN}')"& @CRLF)
    FileWrite($file, "sleep (200)"& @CRLF)
    FileWrite($file, "Send('xxxxx.xxxxx"&$user&"')"& @CRLF)
    FileWrite($file, "sleep (200)"& @CRLF)
    FileWrite($file, "Send('{TAB}')"& @CRLF)
    FileWrite($file, "sleep (200)"& @CRLF)
    FileWrite($file, "Send('"&$pw&"')"& @CRLF)
    FileWrite($file, "sleep (200)"& @CRLF)
    FileWrite($file, "Send('{ENTER}')"& @CRLF)
    FileWrite($file, "EndIf"& @CRLF)
    FileWrite($file, "until ProcessExists ('outlook.exe') = False"& @CRLF)
    FileWrite($file, 'msgbox(0,"","Prozess AutoIT beendet")' & @CRLF)
    EndFunc ;==>win7_out2010
    #cs
    Func winXP_out2010()
    $user = GUICtrlRead($inputUser)
    $pw = GUICtrlRead($inputPW)
    FileWrite($file, "$i = 0" & @CRLF)
    FileWrite($file, "if FileExists (@ProgramFilesDir&'\Microsoft Office\Office14\outlook.exe') Then" & @CRLF)
    FileWrite($file, "ShellExecute (@ProgramFilesDir&'\Microsoft Office\Office14\outlook.exe')" & @CRLF)
    FileWrite($file, "Sleep (50)" & @CRLF)
    FileWrite($file, "While WinExists ('Verbindung zu xxxx.xxxx herstellen','') = False" & @CRLF)
    FileWrite($file, 'msgbox(0,"","hängt in schleife")' & @CRLF)
    FileWrite($file, "Sleep (1000)" & @CRLF)
    FileWrite($file, "$i = $i + 1" & @CRLF)
    FileWrite($file, "If $i = "&$Wartezeit&" Then" & @CRLF)
    FileWrite($file, 'msgbox(0,"","Fenster geht nicht auf - Programmende")' & @CRLF)
    FileWrite($file, "Exit" & @CRLF)
    FileWrite($file, "Else" & @CRLF)
    FileWrite($file, "EndIf" & @CRLF)
    FileWrite($file, "WEnd" & @CRLF)
    FileWrite($file, "if WinExists ('Verbindung zu xxxx.xxxx herstellen','') Then" & @CRLF)
    FileWrite($file, "WinActivate ('Verbindung zu xxxx.xxxx herstellen')" & @CRLF)
    FileWrite($file, "Send ('+{tab}')" & @CRLF)
    FileWrite($file, "Sleep (50)" & @CRLF)
    FileWrite($file, "send ('lxxxxx.xxxx" & $user & "')" & @CRLF)
    FileWrite($file, "send ('{tab}')" & @CRLF)
    FileWrite($file, "send ('" & $pw & "')" & @CRLF)
    FileWrite($file, "send ('{enter}')" & @CRLF)
    FileWrite($file, 'msgbox(0,"","alles passt - Programmende")' & @CRLF)
    FileWrite($file, "exit" & @CRLF)
    FileWrite($file, "else" & @CRLF)
    FileWrite($file, 'msgbox(0,"","nichts wird gefunden - Programmende")' & @CRLF)
    FileWrite($file, "exit" & @CRLF)
    FileWrite($file, "endif"& @CRLF)
    FileWrite($file, "endif")
    FileClose($file)
    EndFunc ;==>winXP_out2010
    #ce
    Func Out2007()
    $user = GUICtrlRead($inputUser)
    $pw = GUICtrlRead($inputPW)
    FileWrite($file, "Opt('WinDetectHiddenText',1)"& @CRLF)
    FileWrite($file, "opt('SendKeyDelay',30)"& @CRLF)
    FileWrite($file, "ShellExecute (@ProgramFilesDir&'\Microsoft Office\Office12\outlook.exe')" & @CRLF)
    FileWrite($file, "do"& @CRLF)
    FileWrite($file, "if WinExists ('Verbindung mit xxxx.xxxx herstellen','Kennwort &speichern') Then"& @CRLF)
    FileWrite($file, "sleep (200)"& @CRLF)
    FileWrite($file, "Send('{SHIFTDOWN}{TAB}{SHIFTUP}')"& @CRLF)
    FileWrite($file, "sleep (200)"& @CRLF)
    FileWrite($file, "Send('xxxx.xxxx"&$user&"')"& @CRLF)
    FileWrite($file, "sleep (200)"& @CRLF)
    FileWrite($file, "Send('{TAB}')"& @CRLF)
    FileWrite($file, "sleep (200)"& @CRLF)
    FileWrite($file, "Send('"&$pw&"')"& @CRLF)
    FileWrite($file, "sleep (200)"& @CRLF)
    FileWrite($file, "Send('{ENTER}')"& @CRLF)
    FileWrite($file, "EndIf"& @CRLF)
    FileWrite($file, "until ProcessExists ('outlook.exe') = False"& @CRLF)
    FileWrite($file, 'msgbox(0,"","Prozess AutoIT beendet")' & @CRLF)
    EndFunc ;==>Out2007
    #cs
    func OutlookWebAccess()
    $user = GUICtrlRead($inputUser)
    $pw = GUICtrlRead($inputPW)
    FileWrite($file, "#include <ie.au3>" & @CRLF)
    FileWrite($file, "$oiezus = _IECreate ('https://owa.xxxx.com/owa')" & @CRLF)
    ;FileWrite($file, "if IsObj (_IECreate ('https://owa.xxxx.com/owa')) then" & @CRLF)
    FileWrite($file, "_IELoadWait($oiezus)" & @CRLF)
    FileWrite($file, "WinActivate ($oiezus)" & @CRLF)
    FileWrite($file, "WinSetState('Outlook Web App - Windows Internet Explorer','',@SW_MAXIMIZE)" & @CRLF)
    FileWrite($file, "send ('xxxx.xxxxx"&$user&"')" & @CRLF)
    FileWrite($file, "send ('{tab}')" & @CRLF)
    FileWrite($file, "Sleep (200)" & @CRLF)
    FileWrite($file, "Send ('"&$pw&"')" & @CRLF)
    FileWrite($file, "Sleep (200)" & @CRLF)
    FileWrite($file, "send ('{enter}')" & @CRLF)
    ;FileWrite($file, "EndIf" & @CRLF)
    EndFunc
    #ce
    Func exekopie()
    FileCreateShortcut ($Ordner & "outlook.exe", @DesktopDir&"\outlook.exe")
    FileCreateShortcut ($Ordner & "outlook.exe", @StartupDir&"\outlook.exe")
    EndFunc ;==>exekopie
    Func kompile2010()
    FileChangeDir($Ordner)
    Run(@ComSpec & " /c " & 'aut2exe.exe /in ' & $Ordner & 'unkompiled.au3 /out ' & $Ordner & 'outlook.exe /icon ' & $Ordner & 'OUTLOOK_2010.ico', "", @SW_HIDE)
    EndFunc ;==>kompile2010
    Func kompile2007()
    FileChangeDir($Ordner)
    Run(@ComSpec & " /c " & 'aut2exe.exe /in ' & $Ordner & 'unkompiled.au3 /out ' & $Ordner & 'outlook.exe /icon ' & $Ordner & 'OUTLOOK_2007.ico', "", @SW_HIDE)
    EndFunc ;==>kompile2007
    func delete()
    FileDelete ($Ordner &"OUTLOOK_2007.ico")
    FileDelete ($Ordner &"OUTLOOK_2010.ico")
    FileDelete ($Ordner &"unkompiled.au3")
    FileDelete ($Ordner &"aut2exe.exe")
    EndFunc
    func info2()
    $labelInfo2 = GUICtrlCreateLabel ("Ordner "&$Ordner&" wird erstellt", 150, 190, 250, 25,-1)
    EndFunc
    func info3()
    $labelInfo3 = GUICtrlCreateLabel ("Outlook.exe und Verknüpfungen werden erstellt", 150, 220, 250, 25)
    EndFunc
    func InfoMsg()
    MsgBox (0,"INFO", " - Auf dem Desktop und im Autostart wurde eine Verknüpfung erstellt "& @crlf & @crlf &" - das Outlook-Symbol aus der Taskleiste / Schnellstartleiste muss evtl. noch entfernt werden "& @crlf & @crlf &" - bei manchen Systemen ist Outlook im Autostart bei "& @crlf &"C:\Dokumente und einstellungen\ALL USERS\autostart -> hier werden Admin Rechte zum entfernen benötigt")
    EndFunc
    ;----------------------------------Funktionen-ENDE-----------------------------------------

    [/autoit]

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™