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. bazii

Beiträge von bazii

  • Dateiverzeichnisse: Bestimmte Berechtigungsgruppe auslesen und auflisten.

    • bazii
    • 2. Januar 2021 um 23:08

    Sorry für den Doppelpost.

    Es ist ein Zwischenbericht, falls es jemanden interessieren oder auch weiterhelfen sollte .....

    Leider gibt mir keines der nachfolgend gelisteten Programme das als Protokollergebnis aus, was ich möchte :rolleyes: aber alle hier genannten Programme sind für Reports der Berechtigungsstrukturen auf Netzlaufwerke relativ gut zu gebrauchen.

    1. Das einfachste Tool ist:

    Zitat von Racer

    icacls.exe

    Das kann man entgegen meiner Befürchtungen wirklich gut auch auf alle Netzlaufwerke anwenden und ist in (zumindest) allen Windows 10 Installationen enthalten.

    Folgende Befehlszeile gibt einen Report aller Berechtigungen von allen Ordner und Dateien (rekursiv) aus.

    Code
    C:\WINDOWS\system32>icacls "Laufwerk\Ordner" /T > Laufwerk\Ordner\Protokoll.txt

    Fazit: Einfach zu bedienen aber bei Laufwerksabfragen mit Terrabyte vielen Verzeichnissen und Dateien ist das Protokoll fast nicht auswertbar.

    2. AccessEnum
    https://docs.microsoft.com/en-us/sysinter…oads/accessenum

    Das Tool (mit GUI) scannt rekursiv alle Dateien und Ordner im angegebenen Pfad. Einschränkungen auf bestimmte Dateitypen oder die Tiefe der Verzeichnis­struktur ist auch hier nicht machbar.
    Das Programm listet abweichende Rechte in den Strukturen der angegebenen Verzeichnisebene auf und erstellt einen exportierbaren Report.

    Die Standard-Einstellung haut schon mal alle Dateien aus dem Listview raus, wenn diese gleiche oder weniger Rechte haben wie das Mutter-Verzeichnis. Das Tool spezialisiert sich auf Ordner und Dateien, die durch abhebende Zugriffsrechte auffallen.

    Fazit brauchbar und erweitert zu 1 gut zu gebrauchen.

    3.

    Zitat von Racer

    Sollte das nicht reichten kann ich Dir setacl von Helge Klein sehr ans Herz legen https://helgeklein.com/setacl/

    Fazit:

    Ich zumindest konnte damit überhaupt keinen Report erstellen. Auch mit der Kommandozeilenoption von dem Proggi habe ich keine Option dazu gefunden.

    Es ist aber ein sehr gutes Verwaltungsprogramm und für die Berechtigungs-Verwaltung im Netzlaufwerk übersichtlicher als der Explorer.

    Was ich gut finde ist, dass alle Änderungen bei geöffnetem Programm endlos wieder rückgängig gemacht werden können. :ironie:

    4. dumpsec

    https://www.systemtools.com/somarsoft/

    Nach Angabe einer E-Mailadresse auf der Homepage bekommt man die Downloadlinks für eine x86 und x64 Version zugeschickt.

    Die recht altertümlich aussehende Software :) (erinnert mich an Windows XP) stammt lt. Dateieigenschaften aus dem Jahr 2016 (About kommt von 2011, Copyright ging bis 1998 :)) aber verrichtet einen sehr guten Dienst.

    Fazit:

    Es gibt viele Report-Optionen (Berichtmöglichkeiten für den Export für Verzeichnisberechtigungen oder Datei- und Verzeichnisberechtigungen und weitere sinnvolle Einstellungsmöglichkeiten.

    dumpsec ist die bislang für mich sinnvollste Möglichkeit, Verzeichnisberechtigungs-Strukturen auszulesen.

    Entscheiden muss jeder für sich selbst. Alle Programme sind etwas besonderes und verrichten ihren Dienst.

    Zitat von bazii

    Kennt jemand von Euch eine Möglichkeit, wie eine bestimmte Berechtigungsgruppe oder ein User aus dem Root-Verzeichnis eines Servers rekursiv ausgelesen und in einer Datei aufgelistet werden kann?

    Bin gerne für weitere Anregungungen dankbar, falls sich jemand damit auskennen sollte.

  • Dateiverzeichnisse: Bestimmte Berechtigungsgruppe auslesen und auflisten.

    • bazii
    • 1. Januar 2021 um 15:09

    Hallo und frohes neues Jahr

    Zitat von Racer

    Was ich Dir sicher sagen kann: Du hast ein großes Erbe bekommen, so ganz ohne Doku!

    Oh ja, nicht nur damit. Ich habe auch noch andere Baustellen. Diese ist jetzt aber Prio 1 da die Geschäftsleitung einen Report von mir möchte, wer auf welche Verzeichnisse berechtigt ist und das ist ohne eine Doku nicht handlebar. Daraum benötige ich da dringend Hilfe.

    Zitat von Racer

    Willst Du nur die AD-Struktur (Verschachtelungen) bis zu den Benutzer herausfinden?

    Meinst Du damit die Gruppenzugehörigkeit der Benutzer in der AD?

    Falls ja, das kann ich mittels Powershell reporten.

    Zitat von Racer

    Willst Du feststellen welche Gruppe wo auf einen Fileservice berechtigt ist?

    Genau das ist mein Anliegen. Wir haben Gruppen bis 4 Verzeichnisebenen unterhalb diverser Hauptordner mit unterscheidlichen Berechtigungen. Das ganze läßt sich ohne einen Report welch Gruppe wo genau berechtigt ist, nicht mehr managen.

    Zitat von Racer

    wie sind die FS bereitgestellt?

    Meinst Du damit den Fileserver?

    Ich habe auf diesen keinen direkten Zugriff. Nur das freigegebene Sharelaufwerk mit den gesamten Verzeichnissen und Dateien auf dem Windows-Server. Die administration der Gruppen und Benutzer unterliegt uns.

    Zitat von Racer

    a.) viele Shares mit standard ACLs ? (Gruppe A_R darf nur lesen [read] und Gruppe A_W darf schreiben [write]

    Beides und viele.

    Zitat von Racer

    b.) wenige Shars mit aufwenidger ACLs wo welcher Benutzer (Gruppe) schreiben darf?

    Das haben wir so meine ich überhaupt nicht.


    Zitat von Racer

    mit icacls.exe kannst Dich mal anfreunden. Sollte das nicht reichten kann ich Dir setacl von Helge Klein sehr ans Herz legen https://helgeklein.com/setacl/

    Vielen Dank für den Tip. icacls.exe kann ich nicht verwenden weil ich das Windows-Serversystem nicht remoten kann. Ich muss quasi allein mit der Netzwerkfreigabe zurecht kommen können.

    "setacl" schau ich mir ab dem 11.01.2021 mal ganz genau an.

  • Dateiverzeichnisse: Bestimmte Berechtigungsgruppe auslesen und auflisten.

    • bazii
    • 31. Dezember 2020 um 23:16
    Zitat von BugFix

    Falls du mal solch ein Musterformular benötigst, melde dich.

    Meldung ^^

    Danke für die Hilfe. Wäre prima wenn Du mir das Musterformblatt zukommen lassen würdest. PN mit E-Mailadresse ist unterwegs.

  • Dateiverzeichnisse: Bestimmte Berechtigungsgruppe auslesen und auflisten.

    • bazii
    • 30. Dezember 2020 um 22:17

    Herzlichen Dank für die Tips.

    Kaufsoftware scheidet leider aus. Da hindert bei uns immer der zentrale Einkauf dran. Die wollen vor einem Softwarekauf immer ein ausführliches Lastenheft und eine Gefährdungsbeurteilung durch den Datenschutzbeauftragten und den ganzen Kram den keiner von und wirklich abarbeiten will. Das war für mich einer der Hauptgründe den Versuch zu starten, eine Skriptsprache wie Autoit zu erlernen.

    Der link zur Powershell schaut interessant aus.

    Powershell nutze ich schon um Reports der einzelnen Benutzern oder Gruppen aus der active-directory herzustellen. es ist nur so aufwenig für mich die ganzen PS-Tools mit der für die Windows-Version passenden ISOs zu installieren und zu skripten. Bin leider kein guter Skripter.

    Was ich interssant finde ist die in google-übersetzter Form getroffene Aussage des Webeditors aus Deinem ersten Link:

    Zitat

    Manager und Compliance-Prüfer fordern IT-Administratoren häufig auf, einen Bericht mit einer Liste der Dateifreigabeberechtigungen zu erstellen, die verschiedenen Personen und Gruppen erteilt wurden.

    Obwohl dies übergreifend klingt, ist es in Wirklichkeit notwendig, die kritischen Ressourcen einer Organisation zu schützen.

    Wenn eine Person oder Gruppe übermäßige Rechte und Berechtigungen für den Zugriff auf alle Dateien und Ordner erhält, kann dies zu ungerechtfertigten Änderungen an Dateien oder unangemessenem Zugriff führen. Solche Maßnahmen könnten für Organisationen gefährlich werden.

    Aus diesem Grund ist es wichtig, NTFS-Berechtigungen zu prüfen, und IT-Administratoren sollten Compliance-Berichte über den Zugriff und die Berechtigungen senden, die verschiedenen Benutzern für den Zugriff auf Dateien und Ordner erteilt wurden.

    Aus Sicht eines IT-Administrators ist diese ständige Berichterstellung und Überwachung eine mühsame und zeitaufwändige Aufgabe. Aus diesem Grund ist es hilfreich, über Tools zur Berichterstellung für Windows NTFS-Berechtigungen zu verfügen.

    Also dass ein Report der NTFS-Berechtigungs-Struktur notwendig ist bezweifle ich nicht. So etwas wurde bei uns seit 17 Jahren das zweite Mal angefordert. Und immer bei Chefwechsel ^^

    Mich interessiert dennoch sehr, wie weitere Forummitglieder Ihren Report der NTFS-Berechtigungs-Struktur in der Firma ausführen und vor allem auch auswerten.

  • Dateiverzeichnisse: Bestimmte Berechtigungsgruppe auslesen und auflisten.

    • bazii
    • 30. Dezember 2020 um 19:47

    Hallo .... ^^

    Mein ehemaliger Chef (der hat es nun hinter sich) hat damals im Active-Directory einfach Gruppen ohne Dokumentation darüber anglegt, auf welche Verzeichnisebenen er diese Gruppen berechtigt hat.

    Kennt jemand von Euch eine Möglichkeit, wie eine bestimmte Berechtigungsgruppe oder ein User aus dem Root-Verzeichnis eines Servers rekursiv ausgelesen und in einer Datei aufgelistet werden kann?

    Ich hoffe Ihr versteht was ich meine :Glaskugel:

    Wie würdest Ihr es angehen, das herauszufinden?

    Freue mich über jede Hilfe.

  • Frohes Weihnachtsfest

    • bazii
    • 20. Dezember 2020 um 16:49

    Schönes Gedicht. Allerdings ergänze ich durch eine Frage und ein Hinweis.

    Ist die Corona ein weibliches Wesen

    oder ist SIE wenn es Corona nicht mehr gibt etwa eine Sache also ein ES gewesen?

    In dem Gedicht wird mir das nicht klar

    darum bleib ich ein Quernörgler ganz und gar.

    Ich wünsche euch eine negativ bleibende Weihnachtszeit.

  • Geheimnis "scripting.dictionary" AutoIt 3.3.14.5

    • bazii
    • 7. November 2020 um 20:14
    Zitat von Bitnugger

    Hier mal eine deutlich kürzere Version:

    Dank' Dir für die Infos und das verbesserte Skript. Ich lerne gerne dazu.

  • Geheimnis "scripting.dictionary" AutoIt 3.3.14.5

    • bazii
    • 6. November 2020 um 20:52

    Hallo

    also ich nutze eine sehr einfache Command-Variante um einen sortierten Index zu erstellen.

    Nach der Ausführung des Skriptes werden zwei unterschiedlich sortierte Dateien erstellt und anschließend zum Betrachten gleich geöffnet.

    Tip:

    Nachdem die Eingabeaufforderung geöffnet wurde, kann man sich über "help dir" die Parameter zur Sortierungsreihenfolge anzeigen lassen.

    Wer möchte kann sich damit das Skript gerne auf eigene Bedürfnisse anpassen.

    Code
    #include <File.au3>
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;; Zeitstempel 2020_11_06;;
    ;; bazii                 ;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;
    
    ; https://autoit.de/thread/87175-geheimnis-scripting-dictionary-autoit-3-3-14-5/
    
    _makeindextxt()
    
    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
    
    Func _makeindextxt()
    
    Local $hProcess
    Local $hProcess_1
    
    Local $sFileSelectFolder = FileSelectFolder("Verzeichnis auswählen", "c:\")
    
    Local $sFile = $sFileSelectFolder & "\index.txt"
    Local $sFile_1 = $sFileSelectFolder & "\index_1.txt"
    
        $hProcess = RunWait(@ComSpec & ' /c ' & 'dir /b /c /l /n /on /r /s /4 > index.txt' & '"', $sFileSelectFolder, @SW_HIDE)
        Sleep(300)
        $hProcess_1 = RunWait(@ComSpec & ' /c ' & 'dir /c /l /n /on /r /s /4 > index_1.txt' & '"', $sFileSelectFolder, @SW_HIDE)
        Sleep(300)
    
        _FileWriteToLine($sFile, 1, "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" & @CRLF & _
        "Diese Dateiauflistung wurde von " & @UserName & ", " & @ComputerName & " am " & @MDAY & "." & @MON & "." & @YEAR & " um " & @HOUR & ":" & @MIN & " Uhr produziert." & @CRLF & _
        "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" & @CRLF, True)
    
        _FileWriteToLine($sFile_1, 1, "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" & @CRLF & _
        "Diese Dateiauflistung wurde von " & @UserName & ", " & @ComputerName & " am " & @MDAY & "." & @MON & "." & @YEAR & " um " & @HOUR & ":" & @MIN & " Uhr produziert." & @CRLF & _
        "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" & @CRLF, True)
    
    
        _FileWriteToLine($sFile, 4, "", True)
        _FileWriteToLine($sFile_1, 6, "", True)
    
        FileClose($sFile)
        FileClose($sFile_1)
    
        ShellExecute($sFile, @SW_MAXIMIZE)
        Sleep(300)
        ShellExecute($sFile_1, @SW_MAXIMIZE)
    
    
    Exit
    
    EndFunc   ;==>_makeindextxt
    
    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
    Alles anzeigen
  • Daten sichern und redundant speichern --- Vorschläge?

    • bazii
    • 8. Juni 2020 um 22:37
    Zitat von alpines

    Da meine Paranoia in letzter Zeit gewachsen ist, dass irgendwann meine Platten den Geist aufgeben möchte ich möglichst fix einen redundanten Speicher einrichten.

    Das war auch mein Ziel:

    Ich stand vor kurzer Zeit mit meiner bescheidenen Datenmenge von ca. 1,2 GB und mit der Datenmange meiner Frau und Kinder bei einem Gesamtsicherungsvolumen von ca. 7 TB. (Da mit den Smartphonekameras heutzutage einfach fast alles gefilmt und forografiert wird.)

    Ich habe mir folglich 2 14TB Platten von "seaga..." besorgt. Auf einen Link verzichte ich an dieser Stelle, da ich keine Werbung machen möchte.

    Mit einer ext. Festplatte sichere ich täglich die festgelegten Daten vom Windows-PC, Apple-Computer und Iphone und die Daten meiner Familie ebenso. Android kann auch gesichert werden. Die ext. Festplatte hängt am Router (USB 3) im Heimnetz. Die Sicherung läuft einmal eingerichtet, vollautomatisch zu den festgelegten Zeiten ab.

    Auf der zweiten ext. Festplatte mache ich monatlich eine redundate Sicherung der Systemlaufwerke. Die kompletten PC's und Mac's als Image. Manuell.

    Das ganze im Familienpack von Acron... Auf einen Link verzichte ich an dieser Stelle auch.

    Das ganze Sicherungsverfahren ist nicht kompliziert und macht seinen Dienst.

    Ich habe schon oftmals diverse Datenrücksicherungen und mehrfach ganze Systeme wiederhergestellt und bin in meinem privaten Umfeld mit den eingekauften Produkten hochzufrieden.

    Abgesehen davon kann ich mit den Windows-PE Versionen (sind inclusive) des o. g. Softwareproduktes, einen sogenannten Unisveralrestore, selbst bei abweichender Hardware bei PC's oder im Notebook erledigen und Systeme von HDD auf SSD umziehen. Die Liste ist lang, was mit dieser Software alles geht.

  • Recursiv Verzeichnisse und Dateien umbenennen

    • bazii
    • 20. Mai 2020 um 21:03
    Zitat von Bitnugger

    Der erste Index in einem Array fängt immer bei 0 an. Wenn das Array also 7 Spalten hat, gehen diese von 0 - 6!

    In der AutoIt-Hilfe zu _WinAPI_EnumFiles steht es sogar drin:

    Hallo

    und danke erstmal für die ausführliche Antwort.

    Ich habe mich schlecht ausgedrückt. Sorry.

    In meinem Beispiel-Code mit der Animation funktioniert das umbenennen der Dateinamen sehr gut.

    Das mit der Zahl 7 war nur ein Beispiel dafür, dass ab [$i][7] der nachfolgende Fehler auftritt.

    If BitAND(^ ERROR Du hast ja aber erklärt warum. Hatte das nicht berücksichtigt.

    Zitat von Bitnugger

    Ich habe das in einigen meiner Projekte etwa so gelöst: Code: LPS_Manager.ini

    Das ganze Vorhaben mit einer .ini oder. txt umzusetzen wäre mir auch viel lieber.

    Zitat von Bitnugger

    Die ConversionTables lade ich mir dann alle als Array in ein Array... ändert der User den Index für die aktuelle Tabelle, kopiere ich das benötigte Table-Array aus $g_aConversionTables[n] nach $g_aCurrentConversionTable.

    Vielen Dank für Deine sehr guten Lösungsansatz.

    Es wird für mich aber ohne weitere Hilfe, zu meinem geposteteten Code, wahrscheinlich nicht umsetzbar werden.

    Aber das eigentliche Problem das ich mit dem Array hatte, hast Du ja bereits gelöst.

    Zitat von Bitnugger

    Zuerst das Wichtigste: _WinAPI_EnumFiles unterschlägt definitiv Files und womöglich auch Folders, denn es sind bei meinem Test 6 Einträge weniger im Array, als mit _FileListToArrayRec!

    Das hatt ich auch schon am Rande in mehreren Verzeichnissen bemerkt. Die Recursion funktioniert irgendwie nicht richtig.

    _FileListToArrayRec! : Schaue ich mir gleich mal an.

    Vielen Dank für den Hinweis. :thumbup:

  • Recursiv Verzeichnisse und Dateien umbenennen

    • bazii
    • 19. Mai 2020 um 22:58

    Hallo

    mit folgendem Beispielcode ist es möglich, bis zu sechs verschiedene Zeichenersetzungen, in Datei- und Verzeichnisnamen recursiv vorzunehmen.

    Versuche ich beispielsweise 10 verschiedene Zeichenersetzungen, bekomme ich einen Fehler:

    Array variable has incorrect number of subscripts or subscript dimension range exceeded.:

    If BitAND($aFilesFolder[$i][7], $FILE_ATTRIBUTE_DIRECTORY) Then _RenameRecursive($sPath & $aFilesFolder[$i][0])

    If BitAND(^ ERROR

    Warum das ganze:

    Es dürfen nur Buchstaben, Zahlen, Binde- und Unterstrich in meinenDatei- und Verzeichnisnamen zugelassen werden. Alle anderen Zeichen müssen aus bestimmten Gründen aus den Verzeichnis und Dateinamen entfernt werden.

    C
    #include <APIFilesConstants.au3>
    #include <APIShellExConstants.au3>
    #include <GDIPlus.au3>
    #include <GDIPlusConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WinAPI.au3>
    #include <WinAPIConstants.au3>
    #include <WinAPIFiles.au3>
    #include <WinAPIShellEx.au3>
    #include <WindowsConstants.au3>
    
    Global $sPath = FileSelectFolder('     Bitte Verzeichnis auswählen !', '')
    If Not FileExists($sPath) Then Exit
    
    ;===================================================================
    ;Codebeginn für die Animation UEZ
    ;===================================================================
    
    _GDIPlus_Startup()
    Global $iW = 400, $iH = 250
    Global Const $hGUI = GUICreate("Loading Spinner", $iW, $iH, -1, -1, $WS_POPUP); $WS_EX_TOPMOST)
    Global Const $iPic = GUICtrlCreatePic("", 0, 0, $iW, $iH)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState()
    
    Global $hHBmp_BG, $hB, $iPerc = 0, $iSleep = 30, $s = 0, $t, $m = 0
    GUIRegisterMsg($WM_TIMER, "PlayAnim")
    DllCall("user32.dll", "int", "SetTimer", "hwnd", $hGUI, "int", 0, "int", $iSleep, "int", 0)
    
    ;===================================================================
    ;Code-Beginn für das umbenennen der Verzeichnisse und Dateien
    ;===================================================================
    
    _RenameRecursive($sPath)
    
    Func _RenameRecursive($sPath)
        If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
        Local $aFilesFolder = _WinAPI_EnumFiles($sPath,0)
        If @error Then Return
        For $i = 1 To $aFilesFolder[0][0]
            If BitAND($aFilesFolder[$i][4], $FILE_ATTRIBUTE_DIRECTORY) Then _RenameRecursive($sPath & $aFilesFolder[$i][0])
            _WinAPI_ShellFileOperation($sPath & $aFilesFolder[$i][0], $sPath & StringReplace(StringReplace(StringReplace(StringReplace(StringReplace($aFilesFolder[$i][0], "ä","ae"), "ö","oe"), "ü","ue"), " ","_"), "ß","ss"), $FO_RENAME, $FOF_SILENT)
        Next
    EndFunc
    
    GUIRegisterMsg($WM_TIMER, "")
    _WinAPI_DeleteObject($hHBmp_BG)
    _GDIPlus_Shutdown()
    GUIDelete()
    Sleep(200)
    MsgBox(64,"", "Die Verzeichnisse und Dateien wurden umbenannt!")
    Exit
    
    ;===================================================================
    ;Code für die Animation von UEZ
    ;===================================================================
    
    Func PlayAnim()
        $hHBmp_BG = _GDIPlus_MultiColorLoader($iW, $iH, "Die Verzeichnisse und Dateien werden umbenannt. Bitte warten! ")
        $hB = GUICtrlSendMsg($iPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBmp_BG)
        If $hB Then _WinAPI_DeleteObject($hB)
        _WinAPI_DeleteObject($hHBmp_BG)
    EndFunc   ;==>PlayAnim
    
    
    Func _GDIPlus_MultiColorLoader($iW, $iH, $sText = "", $sFont = "Verdana", $bHBitmap = True)
        Local Const $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW, $iH)
        Local Const $hGfx = _GDIPlus_ImageGetGraphicsContext($hBitmap)
        _GDIPlus_GraphicsSetSmoothingMode($hGfx, 4 + (@OSBuild > 5999))
        _GDIPlus_GraphicsSetTextRenderingHint($hGfx, 3)
        _GDIPlus_GraphicsSetPixelOffsetMode($hGfx, $GDIP_PIXELOFFSETMODE_HIGHQUALITY)
        _GDIPlus_GraphicsClear($hGfx, 0xFF232323)
    
        Local $iRadius = ($iW > $iH) ? $iH * 0.6 : $iW * 0.6
    
        Local Const $hPath = _GDIPlus_PathCreate()
        _GDIPlus_PathAddEllipse($hPath, ($iW - ($iRadius + 24)) / 2, ($iH - ($iRadius + 24)) / 2, $iRadius + 24, $iRadius + 24)
    
        Local $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath)
        _GDIPlus_PathBrushSetCenterColor($hBrush, 0xFFFFFFFF)
        _GDIPlus_PathBrushSetSurroundColor($hBrush, 0x08101010)
        _GDIPlus_PathBrushSetGammaCorrection($hBrush, True)
    
        Local $aBlend[4][2] = [[3]]
        $aBlend[1][0] = 0 ;0% center color
        $aBlend[1][1] = 0 ;position = boundary
        $aBlend[2][0] = 0.33 ;70% center color
        $aBlend[2][1] = 0.1 ;10% of distance boundary->center point
        $aBlend[3][0] = 1 ;100% center color
        $aBlend[3][1] = 1 ;center point
        _GDIPlus_PathBrushSetBlend($hBrush, $aBlend)
    
        Local $aRect = _GDIPlus_PathBrushGetRect($hBrush)
        _GDIPlus_GraphicsFillRect($hGfx, $aRect[0], $aRect[1], $aRect[2], $aRect[3], $hBrush)
    
        _GDIPlus_PathDispose($hPath)
        _GDIPlus_BrushDispose($hBrush)
    
        Local Const $hBrush_Black = _GDIPlus_BrushCreateSolid(0xFF161616)
        _GDIPlus_GraphicsFillEllipse($hGfx, ($iW - ($iRadius + 10)) / 2, ($iH - ($iRadius + 10)) / 2, $iRadius + 10, $iRadius + 10, $hBrush_Black)
    
        Local Const $hBitmap_Gradient = _GDIPlus_BitmapCreateFromScan0($iRadius, $iRadius)
        Local Const $hGfx_Gradient = _GDIPlus_ImageGetGraphicsContext($hBitmap_Gradient)
        _GDIPlus_GraphicsSetSmoothingMode($hGfx_Gradient, 4 + (@OSBuild > 5999))
        Local Const $hMatrix = _GDIPlus_MatrixCreate()
        Local Static $r = 0
        _GDIPlus_MatrixTranslate($hMatrix, $iRadius / 2, $iRadius / 2)
        _GDIPlus_MatrixRotate($hMatrix, $r)
        _GDIPlus_MatrixTranslate($hMatrix, -$iRadius / 2, -$iRadius / 2)
        _GDIPlus_GraphicsSetTransform($hGfx_Gradient, $hMatrix)
        $r += 10
        Local Const $hBrush_Gradient = _GDIPlus_LineBrushCreate($iRadius, $iRadius / 2, $iRadius, $iRadius, 0xFF000000, 0xFF33CAFD, 1)
        _GDIPlus_LineBrushSetGammaCorrection($hBrush_Gradient)
        _GDIPlus_GraphicsFillEllipse($hGfx_Gradient, 0, 0, $iRadius, $iRadius, $hBrush_Gradient)
        _GDIPlus_GraphicsFillEllipse($hGfx_Gradient, 4, 4, $iRadius - 8, $iRadius - 8, $hBrush_Black)
        _GDIPlus_GraphicsDrawImageRect($hGfx, $hBitmap_Gradient, ($iW - $iRadius) / 2, ($iH - $iRadius) / 2, $iRadius, $iRadius)
        _GDIPlus_BrushDispose($hBrush_Gradient)
        _GDIPlus_BrushDispose($hBrush_Black)
        _GDIPlus_GraphicsDispose($hGfx_Gradient)
        _GDIPlus_BitmapDispose($hBitmap_Gradient)
        _GDIPlus_MatrixDispose($hMatrix)
    
        Local Const $hFormat = _GDIPlus_StringFormatCreate()
        Local Const $hFamily = _GDIPlus_FontFamilyCreate($sFont)
        Local Const $hFont = _GDIPlus_FontCreate($hFamily, $iRadius / 10)
        _GDIPlus_StringFormatSetAlign($hFormat, 1)
        _GDIPlus_StringFormatSetLineAlign($hFormat, 1)
        Local $tLayout = _GDIPlus_RectFCreate(0, 0, $iW, $iH)
        Local Static $iColor = 0x00, $iDir = 13
        Local $hBrush_txt = _GDIPlus_BrushCreateSolid(0xFF000000 + 0x010000 * $iColor + 0x0100 * $iColor + $iColor)
        _GDIPlus_GraphicsDrawStringEx($hGfx, $sText, $hFont, $tLayout, $hFormat, $hBrush_txt)
        $iColor += $iDir
        If $iColor > 0xFF Then
            $iColor = 0xFF
            $iDir *= -1
        ElseIf $iColor < 0x16 Then
            $iDir *= -1
            $iColor = 0x16
        EndIf
        _GDIPlus_BrushDispose($hBrush_txt)
        _GDIPlus_FontDispose($hFont)
        _GDIPlus_FontFamilyDispose($hFamily)
        _GDIPlus_StringFormatDispose($hFormat)
        _GDIPlus_GraphicsDispose($hGfx)
    
        If $bHBitmap Then
            Local $hHBITMAP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
            _GDIPlus_BitmapDispose($hBitmap)
            Return $hHBITMAP
        EndIf
        Return $hBitmap
    EndFunc
    Alles anzeigen

    Jetzt sollte ich aber bis zu (geschätzten) 30 Varianten für verschiedene Zeichenersetzungen, in Datei- und Verzeichnisnamen recursiv vorzunehmen können.

    Würdet Ihr mir bitte das eine oder andere Beispiel nennen, wie Ihr das Vorhaben am sinnvollsten umsetzen würdet?

  • Kann mein eigenes Programm nicht löschen - von Avira keine Unterstützung...

    • bazii
    • 5. Mai 2020 um 20:41
    Zitat von Oscar

    Das sehe ich nicht als Alternative an.

    Bei einer Arbeitsumgebung, die der Programmierer selbst administrieren kann, trifft die von autoiter genannte Variante definitiv zu. Ich war bereits sehr dankbar um die genannte Alternative, damit ich meine Software auf einem geschäftlichen Server überhaupt noch zum laufen bekam.

    100% Zustimmung an Oscar , wenn ich eigentlich nur eine .exe Datei zum Download anbieten möchte.

    Zitat von alpines

    Einen Laufzeitcrypter schreiben und den AV-Herstellern einen Schritt voraus sein :>

    Ich bin der erste, wenn das denn funktionieren würde, der 50 € dafür spenden wird. :theke:

  • Kann mein eigenes Programm nicht löschen - von Avira keine Unterstützung...

    • bazii
    • 3. Mai 2020 um 21:20

    Ich habe das Verhalten aller Virenscsanner satt.

    Zum programmieren und testen nutze ich seit ein paar Monaten ausschließlich eine komplett von Virenprogrammen losgelößte Arbeitsumgebung.

    Dann lade ich die Dateien zu Microsoft und somit zum freischalten der Dateien hoch. Mir hat der Defender unter Win10 seit dem letzten Release ALLES, selbst eine mit AutoIt kompilierte "Hallo Welt(Test-MsgBox).exe" rausgehauen. Seit dem lade ich jede .exe-Datei, die ich selbst mit AutoIt kompiliert habe, zu Microsoft hoch https://www.microsoft.com/en-us/wdsi/filesubmission und bekam bislang alle .exeDateien im Defender von Microsoft ohne Nachfragen freigeschaltet.

    Was halt richtig saudoof für Homepagebesucher (zukünftige Nutzer) ist, wenn man seine eigene Software (und somit seine Visitenkarte) zum Download und kostenfrei zur Verfügung stellt und nahezu 15-35 Virenscanner bei Virustotal auf die Software mit "False-Positive" anschlagen.

    Das ist aber auch bei z. B. NirSoft so. http://blog.nirsoft.net/2009/05/17/ant…all-developers/

    Die haben eine Litanei an "was ist false-Positive" und warum schlägt unsere Software bei Virenscannern Alarm.

  • Powershellcode in AutoItcode übersetzen

    • bazii
    • 2. März 2020 um 18:43
    Zitat von Musashi

    Genau !

    Siehe : https://docs.microsoft.com/de-de/windows-…t-to-windows-pe

    Oder gleich das Powershell Srkipt eines der (IMHO) besten WinPE-Systeme nutzen.

    http://theoven.org/index.php?topic=2607.msg28503#msg28503

  • Kann mein eigenes Programm nicht löschen - von Avira keine Unterstützung...

    • bazii
    • 10. Januar 2020 um 19:43

    Hallo und erstmal wilkommen in diesem Forum.

    Starte den Rechner oder den Server mit einer Unix- oder Linux Distribution oder einem WinPE-System und lösche die Datei einfach von der Platte.

  • Verschlüsselungstool für USB-Stick (AKrypto)

    • bazii
    • 28. November 2019 um 21:42

    Funktioniert einwandfrei :thumbup:

    Vielen Dank für die Verbesserungen.

  • Problem mit #AutoIt3Wrapper_Res_ProductVersion=

    • bazii
    • 28. November 2019 um 21:36

    Hilft Dir zwar nicht fee aber erklärt (ein ganz klein wenig) die Sichtweise des Programmierers .

    http://translate.google.com/translate?hl=d…oductversion%2F (Gugelübersetzer oder wie das auch immer ausgesprochen wird)

    https://www.autoitscript.com/forum/topic/99…productversion/ (Original)

  • Batch erstellen, damit das au3-Skript mit der AutoIt3.exe direkt geöffnet werden kann (gelöst)

    • bazii
    • 6. Oktober 2019 um 20:09

    Danke für die Info. Beim nächsten Mal schau ich genauer hin.

  • Batch erstellen, damit das au3-Skript mit der AutoIt3.exe direkt geöffnet werden kann (gelöst)

    • bazii
    • 6. Oktober 2019 um 18:42

    Das ist eine klasse Idee. Herzlichen Dank dafür!

    Da ich so gut wie nur unkomplizierte Sripte habe, kann ich das eigentlich überall verwenden. Mit der automatisch erstellen Verknüpfung laufen die Skripte sauber durch.

  • Batch erstellen, damit das au3-Skript mit der AutoIt3.exe direkt geöffnet werden kann (gelöst)

    • bazii
    • 6. Oktober 2019 um 09:40

    Hallo autoiter,

    danke für den Hinweis. Ja das geht im Nachhinein gesehen natürlich auch. Ich wollte baldmöglichst wieder eine doppelklickbare Verknüpfung zum Programmstart für die Kollegen auf dem Desktop haben.

    Gestern hatte ich vor Bäumen den Wald nicht mehr gesehen als meine seit Jahren in Benutzung stehenden .exen, allesamt vom neuen Virenscanner in Quarantäne geschoben wurden. Diese Virenscanner raubten mir noch den letzten Nerv.

    Dank der schnellen Hilfe von alpines war dann glücklicher Weise mein Puls wieder auf unter 200.

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™