gelöst Explorer Registry Schlüssel neu laden (Batch)

Mitglied: clragon

clragon (Level 1)

30.03.2018 um 22:28 Uhr, 877 Aufrufe, 11 Kommentare

Hallo liebe Administratoren.

Ich versuche gerade durch eine Batch den Explorer dazu zu bringen die Desktop Icons anzuzeigen oder auszublenden.
Es gibt dafür den Registry Schlüssel

01.
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
01.
DWORD: HideIcons (0 oder 1)
Den man auf 1 setzen kann um die Icons zu verstecken.

Nur wie schaffe ich es das der Explorer den Schlüssel neu einließt?
Den Explorer einfach per
01.
taskkill
abzuschießen scheint mir etwas sehr unelegant und ich hab schon eine Anwendung
gesehen die diese Funktion erfüllt, ohne den Explorer zu beenden, leider ist diese nur timer-basierend und besitzt keinen manuellen Auslöser, damit nutzlos für mich.

Hat da jemand ne Idee?


noch nen schönen Abend,
lg clragon
Mitglied: 135799
31.03.2018, aktualisiert um 08:30 Uhr
Das lässt sich machen, nur musst du dazu schon etwas mehr als die Batch bemühen, denn Batch kann von sich aus keine Win32 Funktionen aufrufen, d.h. du müsstest dir also selbst eine Exe dazu schreiben oder Powershell in deine Batch einbetten.
Dein Stichwort zum Desktop/Explorer-Refresh lautet SHChangeNotify
https://stackoverflow.com/questions/26441747/refresh-desktop-vb-net
https://www.codeproject.com/Tips/205472/Change-Registry-Settings-and-Bro ...

Gruß schnuffi
Mitglied: colinardo
31.03.2018, aktualisiert um 14:54 Uhr
Servus @clragon ,
mit SHChangeNotify wird das in dem Fall eher wenig, da reicht hier für die Desktop-Icons eine WM_COMMAND an den Program Manager zu senden, aber wie schon von Schnuffi gesagt wurde nur mit reinem Batch kommst du da nicht weit. Aber mit etwas Hilfe der Powershell kannst du folgendes direkt in deine Batch schreiben um die Icons ein oder auszublenden (Toggle):
01.
@echo off &setlocal
02.
powershell -Ex ByPass -Command "New-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name HideIcons -Value 0 -Type DWORD -Force; Add-Type -MemberDefinition '[DllImport(\"user32.dll\")]public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);[DllImport(\"user32.dll\")]public static extern IntPtr GetWindow(IntPtr hWnd, int uCmd);[DllImport(\"user32.dll\")] public static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, int lParam);' -Name Win32 -Namespace Tools;$hwnd = [Tools.Win32]::GetWindow([Tools.Win32]::FindWindow('Progman','Program Manager'),5);[Tools.Win32]::SendMessage($hwnd,0x111,0x7402,0)"
Grüße Uwe
Mitglied: clragon
31.03.2018 um 12:39 Uhr
Hallo Uwe
Danke für deinen Lösungs-Vorschlag, scheint mir ganz interessant, irgendwas scheint dabei jedoch falsch zu laufen

screenshot_1 - Klicke auf das Bild, um es zu vergrößern
(Nichts passiert, die Konsole spuckt einem endlosen Wasserfall an "0")


lg clragon
Mitglied: colinardo
31.03.2018, aktualisiert um 14:55 Uhr
Welches OS? Funktioniert hier von Windows 7 bis Windows 10 überall. Installierte PS 3.0 ist Voraussetzung.

-edit- etwas angepasst.
Mitglied: clragon
31.03.2018 um 17:25 Uhr
Befinde mich auf einem Windows 10 +
01.
PS C:\Users> $PSVersionTable.PSVersion
02.

03.
Major  Minor  Build  Revision
04.
-----  -----  -----  --------
05.
5      1      16299  251
Mitglied: colinardo
31.03.2018 um 19:21 Uhr
S.o.
Mitglied: 135799
31.03.2018 um 19:28 Uhr
Hier geht es ebenso.

Gruß Schnuffi
Mitglied: clragon
03.04.2018 um 18:06 Uhr
screenshot_1 - Klicke auf das Bild, um es zu vergrößern

Jetzt scheint es keine errors mehr zu werfen, jedoch passiert gar nichts. Der Desktop bleibt wie er ist, egal ob ich für den Wert des Schlüssels 1 oder 0 angebe.

Er nimmt den Wert zwar an; Beim neustarten des explorers verschwinden die Icons / tauchen wieder auf, aber der Explorer wird nicht aktualisiert beim ausführen.

lg clragon
Mitglied: 135799
03.04.2018 um 20:55 Uhr
Du sollst den Explorer ja auch nicht neu starten, das macht das Skript ja überflüssig.
Hier klappt das einwandfrei, ändern musst du an den Werten auch nichts, so wie ich das sehe fügt er den Wert nur profilaktisch hinzu, die spätere Funktion "toggelt" die Sichtbarkeit d.h. bei jedem Aufruf wird umgeswitscht, und hier geht das problemlos, muss also bei dir liegen.
Mitglied: clragon
03.04.2018 um 21:01 Uhr
Ja das ist soweit korrekt, Ich sollte den explorer nicht neustarten, das habe ich nur gemacht um zu testen ob de Wert gesetzt wurde.

Wurde er. Aber der Explorer macht nichts und der Key wurde nicht neu eingelesen... Vielleicht ist mein Windows kapput?

lg clragon
Mitglied: clragon
13.06.2018 um 17:08 Uhr
Frage geschlossen, Danke für die Hilfe, konnte jedoch keine Lösung für mich finden :thinking:
Titel: Explorer Registry Schlüssel neu laden (Batch)
Content-ID: 369812
Art des Inhalts: Frage
Ausgedruckt am: 20.07.2019 um 23:10:50 Uhr
URL: https://administrator.de/contentid/369812