Vielen Dank für die Mühe, da ich langsam soweit bin größere Projekte anzugehen, brauche ich auch Datenbanken. Tutorials wie deine helfen beim verstehen sehr! Freue mich schon auf den zweiten Teil!
Beiträge von BehindSouls
-
-
-
Man kann übrigens seinen Thread als "erledigt" markieren, einfach auf "Thema bearbeiten" oben rechts klicken und dann als "erledigt markieren" auswählen.
-
Siehr sehr gut aus, ungefähr in diese Richtung solls auch gehen!
Danke fürs teilen des Codes
-
Vielen Dank, das habe ich gesucht!
Ich wusste nur nicht, wie ich die Label von der Syntax her korrekt und effizient ansprechen kann.
-
Hallo, ich habe schon fleißig gegoogelt aber für AutoIT leider keine Lösung gefunden, ich habe folgendes Problem:
Ich habe 10 Labels die ich gerne als Array behandeln würde sodass ich deren Text je nach dem was die Funktion zurück gibt ändern kann.
Beispiel:
Ich habe eine Funktion die 10 Links einliest und diese auf ihre Verfügbarkeit überprüft, das ist alles als Array geschehen,
nun sollen die Ergebnisse in der GUI angezeigt werden. Heißt das erste Ergebnis ist 1 -> Label1 = 1, das zweite Ergebnis ist 5, Label2 = 5.
Im Endeffekt also label[$x] = ergebnis[$x]
Vielen Dank für jegliche Hilfe.
-
Naja..auf die Finger und ins Gesicht ist aber auch ein Unterschied
MfG BehindSouls
-
-
Hallo,
die nachfolgende Funktion durchsucht eine Liste mit zwei Spalten nach einem String, leider wird nur die erste Spalte durchsucht, da ich erst angefangen habe mit arrays etc. zu arbeiten und noch am lernen bin, die Funktion aber jetzt schon dringend brauche, hoffe ich ihr könnt mir helfen/erklären was ich ändern muss
BehindSouls
AutoIt
Alles anzeigen$listview = ControlGetHandle("User Profile Wizard","", 1027) Local $a_list[_GUICtrlListView_GetItemCount($listview)], $x For $x = 0 To _GUICtrlListView_GetItemCount($listview) - 1 $a_list[$x] = _GuiCtrlListView_GetItemText($listview, $x) Next For $x = 0 To UBound($a_list) - 1 if StringinStr($a_list[$x], $backupName) Then TrayTip("Erfolgreich!", "Benutzer zur Übertragung wurde gefunden ",3) FileWrite($log, _nowTime() & " Benutzer zur Übertragung wurde gefunden" & @CRLF) $move = $x EndIf Next
-
Naja das mit den mehreren Anwendungen ist gar nicht unüblich und Ressourcen fressen sollte das ganze auch nicht.
Viele große (Multiplayer)Spiele haben zwei-drei kleinere Anwendungen die überwachen was versucht zu manipulieren etc. -
Jedes großes AntiCheat Programm wird immer wieder ausgehebelt, den Unterschied macht die Zeit in der der Schutz funktioniert.
Ich denke mir dabei, gestalte dein Spiel so, dass es der Mehrheit der Spieler mehr Spaß macht selber zu spielen als zu botten.Und es gibt viele andere Wege Bot Accounts aufzudecken, exorbitante Farmraten etc.
-
Ich habe das Problem gelöst..und es war so simpel wie es nur sein konnte, normalerweise deklariere ich den LOG Pfad immer am anfang, also $log = "C:\test\log.txt"
Das habe ich aber in diesem Skript nicht getan, die Log wurde immer da abgelegt wo das Skript ausgeführt wurde, also irgendwo im nirgendwo.
Der FIX war also einfach: ich habe eine Deklaration gemacht und alle "Skript_log.txt" Dateien mit $log ersetzt.
Das nur noch mal gesagt, falls jemand das selbe Problem hat und so blind ist wie ich
Liebe Grüße
-
Wie gesagt, ich arbeite da eher mit Hammer anstatt mit Meißel, ich kann deine Punkte schon nachvollziehen, funktionieren tuts ja trotzdem.
Inwiefern sind die Tastenbefehle für Outlook denn unzuverlässig?Bei dem C:\test Ordner handelt es sich um einen zuvor selbsterstellten Ordner.
Ja den Vorgang siehst du schon richtig:
Im ersten Durchlauf wird ein Outlook Backup erstellt und ein lokaler Administrator eingerichtet, dieser wird dann beim Neustart automatisch angemeldet
und das Skript startet wieder, macht dann aber beim zweiten Teil weiter, im zweiten Teil wird die LOG.txt weiter beschrieben und eine DNS Konfiguration durchgeführt usw....Das Problem nach dem Neustart ist eigentlich nur, dass bestehende Text Dateien im 'test' Ordner nicht weiter beschrieben werden.
Starte ich jedoch per HAND das Skript, wird die LOG.txt beschrieben.Also gibt es anscheinend ein Problem wie sich mein Skript beim start durch eine .BAT verhält
Ich habe bereits durch "icacls C:\test /grant Jeder:(CI)(OI)(F)" den Zugriff für alle freigeschaltet, das hat leider auch nicht funktioniert.
Ich werde mal versuchen bei dem erstellten Benutzer vorher die Benutzerkontensteuerung herunterzustufen, mal sehen ob das was bringt. -
Einige Dinge vorweg, ich habe nicht sonderlich schön, noch effizient geschrieben ich hoffe ihr blickt da trotzdem durch, es funktioniert alles wie es soll, bis ab dem ersten Neustart FileWrite nicht mehr funktioniert.
AutoIt
Alles anzeigen#RequireAdmin #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=..\..\..\Downloads\tools.ico #AutoIt3Wrapper_Outfile=..\Fertige Skripts\Skript_Domain.exe #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <AutoItConstants.au3> #include <date.au3> #include <Constants.au3> #Include <String.au3> #include <array.au3> #include <Misc.au3> $ip = "0.0.0.0" ;Hier die IP setzen $Domain = "" ;Hier die Domäne einsetzen $domainAdminName = "" ;Hier den Domain Administrator eintragen $domainAdminPasswort = "" ;Hier das Passwort von dem Administrator eintragen $PlaceholderUserName = "" ; auf '' ändern wenn nicht auf QuellPC ausgeführt wird $PlaceHolderPasswort = "" $transwiz = "https://www.forensit.com/Downloads/Profwiz.msi" $vTimeout = 1000 $PlaceholderT = "Placeholder Übertragungsskript" $backupNamePfad = "C:\Placeholder\backupDaten.txt" $backupName = FileRead("C:\Placeholder\backupDaten.txt") $chapter = "C:\Placeholder\chapter.txt" $waypoint = FileRead($chapter) $headline = "-------------------------------------------------------Placeholder----------------------------------------------------" ;Log in Text Datei Format If _Singleton("Skript Domain.exe", 1) = 0 Then MsgBox(0, "Error", "Skript läuft bereits") Exit Endif if $waypoint = @error Then DirCreate("C:\Placeholder") RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\16.0\Outlook\InstallRoot", "path") ;office 16, für neuere oder ältere versionen hier noch mehr RegReads setzen und in der if else hinzufügen if @error Then fehler_outlook() if $waypoint = "2" Then Traytip($PlaceholderT, "Teil 1 wurde ausgeführt, Fortsetzung mit Teil 2 erfolgt.",1,$TIP_NOSOUND) FileWrite("skript_log.txt", _nowTime() & " Erster Teil wurde ausgeführt, nun folgt Teil Zwei." & @CRLF) DNS_settings() elseIf $waypoint = "3" Then transwiz_user_uebertragung() elseIf $waypoint = "4" Then outlook_user_reinstall() else FileWrite("skript_log.txt", $headline & @CRLF) FileWrite("skript_log.txt", "Log vom " & _NowDate() & " um " & _NowTime() & @CRLF) if FileExists("C:\Placeholder\backupDaten.txt") Then FileWrite("skript_log.txt", _nowTime() & " backupDaten existieren bereits, fahre fort." & @CRLF) Else FileWrite($backupNamePfad, @UserName) FileClose($backupNamePfad) EndIf Placeholder() Outlook_backup() ;Chapter1 Ausführung EndIf func Placeholder();Placeholder ordner rechte freigeben run("cmd") WinWaitActive("[CLASS:ConsoleWindowClass]") ClipPut("icacls C:\Placeholder /grant Jeder:(CI)(OI)(F)") Send ("^v") Sleep($vTimeout) Send("{ENTER}") Send("exit") Sleep($vTimeout) Send("{ENTER}") EndFunc func Outlook_backup();Backup von Outlook Postfach Traytip($PlaceholderT, "Backup von Outlook wird erstellt.",1,$TIP_NOSOUND) FileWrite("skript_log.txt", _nowTime() & " Backup von Outlook wird erstellt." & @CRLF) $Outlook = "[CLASS:rctrl_renwnd32]" $InstallOutlook = RegRead("HKEY_LOCAL_MACHINE64\SOFTWARE\WOW6432Node\Microsoft\Office\16.0\Outlook\InstallRoot", "path") run($InstallOutlook & "OUTLOOK.EXE") WinWaitActive($Outlook) Sleep($vTimeout) Send("!d") Sleep($vTimeout) Send("!f") Sleep($vTimeout) Send("!i") Sleep($vTimeout) Send("{DOWN 2}") Send("{ENTER}") Sleep($vTimeout) Send("{DOWN}") Send("{ENTER}") Sleep($vTimeout) Send("{ENTER}") Send("{TAB}") Send("{ENTER}") Sleep($vTimeout) Send($backupName) Send("_backup.pst") Sleep($vTimeout) Send("!e") Sleep($vTimeout) Send("C:\Placeholder") Sleep($vTimeout) Send("{TAB 10}") Sleep($vTimeout) Send("{ENTER}") Sleep($vTimeout) Send("{TAB}") Send("{ENTER}") FileWrite("skript_log.txt", _nowTime() & " Backup von Outlook wurde erstellt." & @CRLF) Traytip($PlaceholderT, "Backup von Outlook wurde erstellt.",1,$TIP_NOSOUND) Sleep(3000);ansonsten hängt sich Outlook beim Backup auf, eventuell variiert die Zeit(Größe des Postfachs) WinClose($Outlook) transwiz_download() EndFunc func fehler_outlook();falls Outlook nicht installiert ist oder eine nicht unterstützte Version vorliegt, bei mehr Zeit können mehr Outlook Versionen unterstützt werden FileWrite("skript_log.txt", _nowTime() & " Achtung: RegistryKey nicht gefunden, falsche Version oder gar keine" & @CRLF) Traytip($PlaceholderT, "Outlook ist nicht installiert oder es wird eine nicht unterstützte Version benutzt.",1,$TIP_NOSOUND+$TIP_ICONHAND) ;MsgBox(64,"Fehler mit Outlook","Outlook nicht vorhanden oder Version wird nicht unterstützt") Exit EndFunc func transwiz_download() FileWrite("skript_log.txt", _nowTime() & " Transwiz wird gedownloadet" & @CRLF) Traytip($PlaceholderT, "Transwiz wird gedownloadet",1,$TIP_NOSOUND) ProgressOn("Transwiz Download", "Downloadet...", "0%") $url = $transwiz $downloadpfad = "C:\Placeholder\transwiz.msi" $hInet = InetGet($url, $downloadpfad, 1, 1) $FileSize = InetGetSize($url) While Not InetGetInfo($hInet, 2) Sleep(300) $BytesReceived = InetGetInfo($hInet, 0) $Pct = Int($BytesReceived / $FileSize * 100) ProgressSet($Pct, $Pct & "%") WEnd ProgressOff() FileWrite("skript_log.txt", _nowTime() & " Transwiz wurde gedownloadet" & @CRLF) Traytip($PlaceholderT, "Transwiz wurde gedownloadet",1,$TIP_NOSOUND) createPlaceholder() EndFunc func createPlaceholder() Traytip($PlaceholderT, "Account wird angelegt, User 'Placeholder' wird erstellt und mit Admin Rechten ausgestattet",1,$TIP_NOSOUND) FileWrite("skript_log.txt", _nowTime() & " User 'Placeholder' wird erstellt und als Admin ausgewiesen" & @CRLF) $user_script = "net user Placeholder1 placeholderpassword /add" $user_script2 = "net localgroup Administratoren Placeholder1 /add" $console = run("cmd") Sleep($vTimeout) Send("net user " & $PlaceholderUserName & " " & $PlaceholderPasswort & " /add") Sleep($vTimeout) Send("{ENTER}") Send("net localgroup Administratoren " & $PlaceholderUserName & " /add") Send("{ENTER}") Sleep($vTimeout) Send("exit") Sleep($vTimeout) Send("{ENTER}") FileWrite("skript_log.txt", _nowTime() & " User 'Placeholder' wurde erstellt und als Admin ausgewiesen" & @CRLF) Traytip($PlaceholderT, "Account wurde angelegt, User 'Placeholder' erstellt und mit Admin Rechten ausgestattet",1,$TIP_NOSOUND) ;domain_ausbuchung() ;EIGENTLICHE NÄCHSTE FUNKTION autoadminlogon();TEMPORÄR ANSTATT DOMAIN, um eine Ausbuchung am Quell PC zu verhindern EndFunc func domain_ausbuchung() Traytip($PlaceholderT, "Benutzer wird aus der Rechnerdomäne ausgebucht",1,$TIP_NOSOUND) FileWrite("skript_log.txt", _nowTime() & " Benutzer wird aus der Rechnerdomäne ausgebucht" & @CRLF) $systemeigenschaften = "[CLASS:#32770]" run(@WindowsDir & "\System32\SystemPropertiesAdvanced.exe") WinWaitActive($systemeigenschaften) Send("{TAB 6}") Send("{LEFT}") Send("{TAB 3}") Send("{ENTER}") Send("{TAB 2}") Send("{down}") Send("{TAB}") Send("ausgebucht") Send("{TAB}") Send("{ENTER}") Sleep($vTimeout) Send("{TAB}") Send("{ENTER}") FileWrite("skript_log.txt", _nowTime() & " Benutzer wurde aus der Rechnerdomäne ausgebucht" & @CRLF) Traytip($PlaceholderT, "Benutzer wurde aus der Rechnerdomäne ausgebucht",1,$TIP_NOSOUND) autoadminlogon() EndFunc func autoadminlogon();automatische lokale Anmeldung von 'Placeholder' FileWrite("skript_log.txt", _nowTime() & " AutoAdminLogon wird konfiguriert" & @CRLF) Traytip($PlaceholderT, "AutoAdminLogon wird eingerichtet",1,$TIP_NOSOUND) RegWrite("HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "AutoAdminLogon", "REG_SZ", "1") RegWrite("HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultUserName", "REG_SZ", $PlaceholderUserName) ;TEMPORÄR 1 DA QUELLPC PROBLEME MACHTE RegWrite("HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultPassword", "REG_SZ", $PlaceholderPasswort) FileWrite("skript_log.txt", _nowTime() & " AutoAdminLogon wurde konfiguriert" & @CRLF) Traytip($PlaceholderT, "AutoAdminLogon wurde eingerichtet",1,$TIP_NOSOUND) restart() EndFunc func restart() Traytip($PlaceholderT, "Neustart wird eingeleitet, User Placeholder wird angemeldet.",1,$TIP_NOSOUND) FileWrite($chapter,"2") ;endgültige Pos Sleep($vTimeout) ;autorunbatch FileWrite("C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\Placeholder_skript.bat",'start C:\Placeholder\Skript_Domain.exe') ;restart run ("cmd") WinWaitActive("[CLASS:ConsoleWindowClass]") Sleep(1000) ClipPut("shutdown -t 10 -r -f") Sleep(1000) Send ("^v") Send("{ALT up}{ENTER}") Sleep($vTimeout) WinClose("[CLASS:ConsoleWindowClass]") FileWrite("skript_log.txt", _nowTime() & " Computer wird neugestartet und User 'Placeholder' wird angemeldet" & @CRLF) EndFunc ;|---------------------------------------------------------------Chapter2-------------------------------------------------------------------------------------|; func DNS_settings() FileOpen("skript_log.txt") FileWrite("skript_log.txt", _nowTime() & " DNS wird gesetzt" & @CRLF) Traytip($PlaceholderT, "DNS wird gesetzt",5,$TIP_NOSOUND) Global $DOS, $Message $DOS = Run(@ComSpec & " /k netsh interface ip show config", "", @SW_SHOW, $STDERR_CHILD + $STDOUT_CHILD) ProcessWaitClose($DOS) $Message = StdoutRead($DOS) ;Netzwerkkarte suchen gegebenenfalls muss der Anwender sie umbenennen, Konfiguration wird in dieser If ausgeführt if StringInStr($Message, 'LAN-Verbindung 1') Then Traytip($PlaceholderT, "LAN-Verbindung 1 gefunden, DNS Konfiguration wird durchgeführt",5,$TIP_NOSOUND) FileWrite("skript_log.txt", _nowTime() & " LAN-Verbindung 1 wurde gefunden und wird jetzt konfiguriert" & @CRLF) $console = run("cmd") Sleep($vTimeout) Send('netsh interface ipv4 set dns "LAN-Verbindung 1" static ' & $ip & ' primary') Sleep($vTimeout) Send("{ENTER}") Send("exit") Sleep($vTimeout) Send("{ENTER}") Traytip($PlaceholderT, "DNS wurde gesetzt",5,$TIP_NOSOUND) FileWrite("skript_log.txt", _nowTime() & " DNS wurde gesetzt." & @CRLF) ;domain_buchung() ;TEMPORÄR FÜR TESTS AUSGEKLAMMERT Else Traytip($PlaceholderT, "LAN-Verbindung 1 nicht gefunden, bitte die Verbindung umbenennen auf 'LAN-Verbindung 1'",5,$TIP_NOSOUND+$TIP_ICONEXCLAMATION) FileWrite("skript_log.txt", _nowTime() & " LAN-Verbindung 1 wurde nicht gefunden, Netzwerkverbindungen wurde geöffnet." & @CRLF) Exit EndIf EndFunc func domain_buchung();hier muss noch die passwort abfrage bearbeitet werden Traytip($PlaceholderT, "Domaineinbuchung wird ausgeführt",5,$TIP_NOSOUND) FileWrite("skript_log.txt", _nowTime() & " Domainbuchung wird ausgeführt." & @CRLF) Run('rundll32 shell32.dll,Control_RunDLL Sysdm.cpl') WinWaitActive("Systemeigenschaften") Send("{TAB 2}") Send("{ENTER}") Send("{TAB 2}") Send("{UP}") Send($Domain) ;hier fehlt die Passwortabfrage FileWrite("skript_log.txt", _nowTime() & " Domainbuchung wurde ausgeführt." & @CRLF) Traytip($PlaceholderT, "Domaineinbuchung wurde ausgeführt",5,$TIP_NOSOUND) outlook_user() EndFunc func outlook_user() FileWrite("skript_log.txt", _nowTime() & " Mail Profil wird erstellt." & @CRLF) Traytip($PlaceholderT, "Mail Profil wird erstellt",5,$TIP_NOSOUND) ShellExecute("C:\Program Files (x86)\Microsoft Office\root\Office16\MLCFG32.CPL") WinWaitActive("Mail-Setup - Outlook") Send("{TAB 2}") Send("{ENTER}") Send("{TAB}") Send("{ENTER}") Send($backupName) Send("{ENTER}") Send(2500) Send("{ENTER}") Send("{ENTER}") autologon_admin() EndFunc func autologon_admin() ;ACHTUNG HIER SIND PLACEHOLDER DIE DURCH DOMAIN ADMIN DATEN ERSETZT WERDEN MÜSSEN FileWrite("skript_log.txt", _nowTime() & " AutoAdminLogon für Admin wird konfiguriert" & @CRLF) Traytip($PlaceholderT, "AutoAdminLogon wird eingerichtet",1,$TIP_NOSOUND) RegWrite("HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "AutoAdminLogon", "REG_SZ", "1") RegWrite("HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultUserName", "REG_SZ",$domainAdminName) RegWrite("HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultPassword", "REG_SZ", $domainAdminPasswort) FileWrite("skript_log.txt", _nowTime() & " AutoAdminLogon für Admin wurde konfiguriert" & @CRLF) Traytip($PlaceholderT, "AutoAdminLogon wurde eingerichtet",1,$TIP_NOSOUND) ;restart Traytip($PlaceholderT, "Neustart wird eingeleitet, Domain Admin wird angemeldet.",1,$TIP_NOSOUND) FileDelete($chapter) FileWrite($chapter, "3") run ("cmd") WinWaitActive("[CLASS:ConsoleWindowClass]") Sleep(1000) ClipPut("shutdown -t 10 -r -f") Sleep(1000) Send ("^v") Send("{ALT up}{ENTER}") Sleep($vTimeout) WinClose("[CLASS:ConsoleWindowClass]") FileWrite("skript_log.txt", _nowTime() & " Computer wird neugestartet und Domain Admin wird angemeldet" & @CRLF) EndFunc ;letzte Funktion vor Chapter3 ;|----------------------------------------------------------Chapter3-----------------------------------------------------------------------|; func transwiz_user_uebertragung() autoadminlogon_benutzer() EndFunc func autoadminlogon_benutzer() ;restart Traytip($PlaceholderT, "Neustart wird eingeleitet, Benutzer wird angemeldet.",1,$TIP_NOSOUND) FileDelete($chapter) FileWrite($chapter, "4") run ("cmd") WinWaitActive("[CLASS:ConsoleWindowClass]") Sleep(1000) ClipPut("shutdown -t 10 -r -f") Sleep(1000) Send ("^v") Send("{ALT up}{ENTER}") Sleep($vTimeout) WinClose("[CLASS:ConsoleWindowClass]") FileWrite("skript_log.txt", _nowTime() & " Computer wird neugestartet und Benutzer wird angemeldet" & @CRLF) EndFunc ;|----------------------------------------------------------Chapter4-----------------------------------------------------------------------|; func outlook_user_reinstall() EndFunc
-
-
Hallo Community,
ich schreibe im Moment ein Skript welches mehrere Neustarts veranlässt und dann durch eine Batch im Autorun Ordner wieder gestartet wird, das klappt auch alles und die Funktionen die folgen werden auch ausgeführt(cmd öffnen etc.) jedoch werden Dinge wie "FileWrite" nicht ausgeführt, mein erster Verdacht waren die Rechte, da die Text Datei in einem Ordner unter C: liegt aber die Rechte dazu sind vorhanden. Hat jemand einen Tipp?
Den Code kann ich aus Sicherheitsgründen nur zum Teil offenlegen, ich hoffe es kann mir dennoch geholfen werden.
Mit freundlichem Gruß
BehindSoulsNachtrag: Ach ja, das Skript führt nach dem Neustart weitere Funktionen aus in dem es eine andere Text Datei ausliest um zu wissen wo es fortfahren soll, nach dem Motto: " if script = 2 Then func2() " usw. dies funktioniert auch tadellos.
AutoIt
Alles anzeigen;restart run ("cmd") WinWaitActive("[CLASS:ConsoleWindowClass]") Sleep(1000) ClipPut("shutdown -t 10 -r -f") Sleep(1000) Send ("^v") Send("{ENTER}") Sleep($vTimeout) WinClose("[CLASS:ConsoleWindowClass]") FileWrite("skript_log.txt", _nowTime() & " Computer wird neugestartet und User 'test' wird angemeldet" & @CRLF) ;nach dem Neustart wird das Skript durch eine .bat gestartet und soll folgendes zum Beispiel tun: FileWrite("skript_log.txt", "Computer wurde neugestartet") ;das funktioniert aber nicht, was jedoch funktioniert ist zum Beispiel: run("cmd") ; und dann kann ich auch irgendwelche Befehle ausführen