Position von Desktop Icons speichern und wiederherstellen

  • Folgende Frage wurde gestellt von CHmux in der Shoutbox :

    Zitat

    Ich suche für meinen Firmenrechner eine Möglichkeit, die Dekstop-Icons zu speichern und (vor allem) zu restaurieren. Dafür gibt es natürlich massig Tools. Wir haben aber in der Firma eine Whitelist-basierte Programmsperre. Ich kann keine EXE ausführen, für dich ich nicht freigeschaltet bin. AutoIt habe ich offiziell in der Whitelist und kann es also benutzen.

    Frage 1: Kann man mit AutoIt die Desktop-Icons speichern und verschieben? (Ich denke, ja)

    Frage 2: Gibt es dazu vielleicht ein Beispiel-Skript? (Ich habe dazu nichts gefunden)

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Bisherige Beiträge (aus der Shoutbox) :

    Zitat von Moombas

    Die Position etc. steht in der Registry (HKCU\Software\Microsoft\Windows\Shell\Bags\1\Desktop) Wie sie dort jedoch korrekt ausgelesen und wieder neu geschrieben werden können, bin ich raus.

    Zitat von SEuBO

    Wenn die Darstellung auf dem Desktop selbst unwichtig ist, ist sind das nur nur simple FileList / FileMove -Befehle. Wenn auf dem Desktop umsortiert werden soll, KÖNNTE (nicht getestet) folgende Funktionssammlung helfen - https://www.autoitscript.com/f…ows-explorer-and-desktop/

    Zitat von SEuBO

    https://www.autoitscript.com/f…esktop-shell-bags-parser/ .. aber wenn ich's richtig verstehe, ist der Desktop auch nur ein ListView Control. Hier ist ein Script, das die Icons mittels Listview-Funktionen verschiebt. Sollte leicht adaptierbar sein. RE: Desktop icons

    Zitat von CHMux

    Das Skript unter dem Link von
      SEuBo (Desktop icons) ist schon mal sehr gut.

    Das kann grundsätzlich die Icon Positionen speichern und restaurieren.

    Aber irgend was läuft da (bei mir?) noch falsch: In der INI_Datei werden alle Icons mit leerem Namen gespeichert.

    Dann klappt auch das Restoren nicht so wie geplant.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Zitat von @CHMux

    Das Skript unter dem Link von SEuBo (Desktop icons) ist schon mal sehr gut.

    Na ja, gut ist relativ... hier mal meine Version:

  • Funktionieren allerdings beide (weder das von Veronesi, noch von Dir Bitnugger ) bei mir. Windows 10 version 2004 , 64 Bit.

    Schon seltsam... ich habe:

    AutoIt: 3.3.14.5/X64

    PC1: Windows 10 20H2 (Build 19042.685), X64

    PC2: Windows 10 Version 2004 (Build 19041.685), X64

    Auf PC1 habe ich Fences installiert ControlGetHandle("[CLASS:NDesk]", ...) und auf PC2 nicht ControlGetHandle("[CLASS:Progman]", ...), auf beiden funktioniert es.

    Mein bei Windows angemeldeter User ist in der Gruppe der Administratoren (Default) und UAC ist deaktiviert... aber das kann es nicht sein!?

    Was sagt denn das AutoIt-Info-Tool, wenn du den Finder auf dem Desktop (freie Stelle) loslässt?

    Einmal editiert, zuletzt von Bitnugger (11. Januar 2021 um 22:54)

  • Wie wäre es mit dem Icon Configuration Utility von KaFu?

    https://www.autoitscript.com/forum/topic/13…ted-2018-sep-16

  • Wie wäre es mit dem Icon Configuration Utility von KaFu?

    Danke... habe mal rein geschaut... Fehlerprüfung hat er deaktiviert... ist nicht wirklich sauber geschrieben, aber sicher einen Blick wert.

    SEuBo - ich habe aus dem Script von KaFu die Funktion zum Ermitteln des Desktop-Handle mit bei mir eingebaut... teste es mal damit.

    Einmal editiert, zuletzt von Bitnugger (12. Januar 2021 um 13:19) aus folgendem Grund: _GUICtrlListView_SetItemPosition korrigiert: $iIndex​ -> ​​$i​

  • Das Skript aus dem Link funktioniert bei mir (W7 Pro), das von Bitnugger habe ich noch nicht getestet.

    CHmux Hast du auch #AutoIt3Wrapper_UseX64=y drin (sofern du 64Bit OS hast)? Was steht in der erstellten .ini Datei?

    2 Mal editiert, zuletzt von Moombas (12. Januar 2021 um 09:07)

  • Meine Testumgebung: Win 10 Pro, x64, Standard User (Admin)

    Testablauf:

    - Als erstes zur Sicherheit ein Backup mit ICU! 8o


    - Das jeweilige Test-Script gestartet und die Sicherung der Icon-Positionen ausführen lassen.

    - Dann einen neuen Oderner erstellt und 2 der vorhandenen Icons in den neuen Ordner verschoben.

    - Icons auf dem Desktop von Hand gründlich durcheinander gewirbelt.

    - Restore des jeweiligen Scripts durchgeführt.

    Ergebnis:

    Script von Veronesi hat das Testszenario bestanden und alle Icons richtig positioniert!

    Script von Bitnugger hat mir alle Icons kreuz und quer um die Ohren gehauen!

    Edit: Nach Fehlerbehebung hat das Script das Testszenario bestanden und alle Icons richtig positioniert!

    ICU (Icon Configuration Utility) von KaFu hat mehr* als tadellos funktioniert! (* Setzt z.B. nach der Sicherung neu hinzugekommene Icons an eine vorher bestimmte Stelle.)

    Wie wäre es mit dem Icon Configuration Utility von KaFu?

    https://www.autoitscript.com/forum/topic/13…ted-2018-sep-16

    Noch bevor ich es auf autoitscript.com kannte, hatte ich ICU schon seit Jahren auf mehreren Rechnern in Betrieb, damals von KaFu's Webseite. :thumbup:

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

    Einmal editiert, zuletzt von Professor Bernd (13. Januar 2021 um 21:30)

  • Script von Bitnugger hat mir alle Icons kreuz und quer um die Ohren gehauen!

    Oh ja... ich denke ich habe die fehlerhafte Zeile gefunden:

    _GUICtrlListView_SetItemPosition($g_hListview, $iIndex, $aIcons[$iIndex][1], $aIcons[$iIndex][2]) ; Position wieder restaurieren!

    Richtig ist:

    _GUICtrlListView_SetItemPosition($g_hListview, $i, $aIcons[$iIndex][1], $aIcons[$iIndex][2]) ; Position wieder restaurieren!

    Nur um das klarzustellen: ICU (Icon Configuration Utility) von KaFu ist definitiv die bessere Wahl... das Minimal-Script von Veronesi und auch die geänderte Version von mir funktionieren nur dann, wenn die Desktopeinstellungen es zulassen. ICU berücksichtig diese jedoch.

    2 Mal editiert, zuletzt von Bitnugger (12. Januar 2021 um 14:06)

  • Nur noch der Vollständigkeit halber, um die Frage zu beantworten - Autoit (3.3.14.5), Windows 10 Version 2004 (Build 19041.685), x64 Bit. Autoit läuft in x86 Umgebung (Legacy Mode). Benutzer hat eingeschränkte Rechte, UAC ist aktiv. Mein Desktop hat die Klasse "WorkerW". Im ICU Tool scheint das berücksichtigt zu sein.

  • Mein Desktop hat die Klasse "WorkerW". Im ICU Tool scheint das berücksichtigt zu sein.

    Ja, genau, in der zweiten Version meines Scripts in Post #7 auch... aber in Post #10 habe ich auch was dazu geschrieben, warum man es besser nicht nutzen sollte...

  • Hallo zusammen!
    Das ICU sieht schon mal klasse aus. So was in der Art hab ich gesucht.

    Aber kann man auch rein als Skript ausführen?

    Ich hab mir den Source heruntergeladen und da wird beim Start gleich eine

    EXE-Datei erzeugt. Das ist cool für zu Hause, aber in meiner FIrma ist die

    EXE nicht auf der WhiteList und damit nicht ausführbar. ||

    Ich brauch also eine reine Skript-Lösung.

    Was wäre einfacher? Das ICU auf Skript umstellen oder die Beispielskripte hier

    etwas auzupeppen?

  • Das ist cool für zu Hause, aber in meiner FIrma ist die EXE nicht auf der WhiteList und damit nicht ausführbar. Ich brauch also eine reine Skript-Lösung.

    Eine 'reine' Skript-Lösung kann es so nicht geben, da du ja zumindest den AutoIt-Interpreter (also die AutoIt3.exe) zum Ausführen benötigst. Ein als .exe kompiliertes AutoIt-Skript besteht (vereinfacht dargestellt) aus dem Skript selbst (im Format .a3x) und dem Interpreter.

    Die AutoIt3.exe wird aufgrund ihrer Verbreitung aber in der Regel von Virenscannern in Ruhe gelassen.

    Diese Datei kann alleinstehend auf den Zielrechner kopiert werden - eine vollständige AutoIt-Installation ist, zum Starten von Skripten (.au3 / .a3x) , nicht erforderlich. Du solltest in deiner Firma mal nachfragen, ob diese Datei auf die Whitelist/Allowlist gesetzt werden kann.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Du solltest in deiner Firma mal nachfragen, ob diese Datei auf die Whitelist/Allowlist gesetzt werden kann.

    Die AutoIt3.exe auf die Whitelist/Allowlist setzen... dann kann er ihm auch gleich eine Lizenz zum Töten ausstellen... :rofl:

    Kein Admin mit mehr als 3 Gramm Hirn wird das freiwillig machen...

  • Die AutoIt3.exe auf die Whitelist/Allowlist setzen... dann kann er ihm auch gleich eine Lizenz zum Töten ausstellen... :rofl:

    Kein Admin mit mehr als 3 Gramm Hirn wird das freiwillig machen...

    Herrje, das war ein allgemeiner Hinweis !

    Wie sein Admin das (rechte-)technisch im Detail umsetzt, wird der/die hoffentlich selbst wissen.

    Falls sowohl selbstkompilierte .exe als auch der AutoIt-Interpreter (bzw. eine AutoIt Installation) nicht verwendet werden dürfen, dann wird es doch eng mit der von ihm gewünschten, "reinen Skript-Lösung".

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Ist alles in Ordnung, Musashi?

    Du solltest in deiner Firma mal nachfragen, ob diese Datei auf die Whitelist/Allowlist gesetzt werden kann.

    Folgende Frage wurde gestellt von CHmux in der Shoutbox :

    Zitat

    ... Wir haben aber in der Firma eine Whitelist-basierte Programmsperre. Ich kann keine EXE ausführen, für dich ich nicht freigeschaltet bin. AutoIt habe ich offiziell in der Whitelist und kann es also benutzen.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • "AutoIt habe ich offiziell in der Whitelist und kann es also benutzen."

    Das habe ich aber auch übersehen... dann kann @CHmux seine Scripte ja einfach mit der AutoIt3.exe starten, ohne sie zu kompilieren.


    Run a script using the interpreter:

    AutoIt3.exe [/ErrorStdOut] [/AutoIt3ExecuteScript] filename [params ...] ; Execute the AutoIt3 script 'filename' with optional parameters

  • Ist alles in Ordnung, Musashi?

    Alles im (altersgemäßen) Saft ;) - von einer leichten, durch die Corona-Lage bedingten Gereiztheit mal abgesehen, aber das geht sicher vielen von uns so.

    Zitat von CHMux

    AutoIt habe ich offiziell in der Whitelist und kann es also benutzen.

    Das habe ich aber auch übersehen... dann kann CHmux seine Scripte ja einfach mit der AutoIt3.exe starten, ohne sie zu kompilieren.

    Ja, den Punkt habe ich auch übersehen :whistling:. Ich habe diesen Thread ja nur gestartet und die bis dato aufgelaufenen Shoutboxbeiträge eingefügt, da CHmux damit Probleme hatte.

    CHmux :

    Da Du den Interpreter (die AutoIt3.exe) verwenden darfst, stehen Dir verschiedene Optionen offen ein Skript zu starten, u.a. :

    • die von Bitnugger angegebene Lösung (auch als Desktopverknüpfung)
    • falls Du das Format a3x bevorzugst und es eine Dateizuordnung der Extension mit dem Interpreter gibt, mittels Doppelklick oder einer Desktopverknüpfung.
    • usw.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."