Hallo,
hab etwas gebraucht bis es jetzt endlich läuft.
Man ändert ja nicht oft die Symbole auf dem Desktop und manche werden das überflüssig finden, da ich aber mein Windows öfters mal vom Image zurückspiele und die Änderungen an den Icons nicht mit im Image haben möchte hab ich ein kleines Programm geschrieben um das schneller ändern zu können.
Spoiler anzeigen
#include <GuiConstants.au3>
#include <file.au3>
#Region ### START Koda GUI section ### Form=
$Desktop_Symbole = GUICreate("Desktop_Symbole", 211, 211, -1, -1)
$OK = GUICtrlCreateButton("OK", 15, 176, 75, 25, 0)
$Abbrechen = GUICtrlCreateButton("Abbrechen", 120, 176, 75, 25, 0)
$Arbeitsplatz = GUICtrlCreateCheckbox("Arbeitsplatz", 10, 20, 97, 17)
$Eigene_Dateien = GUICtrlCreateCheckbox("Eigene_Dateien", 10, 50, 97, 17)
$Netzwerkumgebung = GUICtrlCreateCheckbox("Netzwerkumgebung", 10, 80, 130, 17)
$Papierkorb_leer = GUICtrlCreateCheckbox("Papierkorb_leer", 10, 110, 97, 17)
$Papierkorb_voll = GUICtrlCreateCheckbox("Papierkorb_voll", 10, 140, 97, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$user = @UserName ; Für Funktion myGetSID
$var = StringSplit(myGetSID($user), @TAB) ;Für Funktion myGetSID
$wait = 20; wait 20ms for next progressstep
$s = 0; progressbar-saveposition
$verzeichnis = "D:\Theme\Icons"
Func myGetSID($User=@UserName, $Host=@ComputerName, $NurEiner=True)
Local $wbemFlagReturnImmediately=0x10, $wbemFlagForwardOnly=0x20, $colItems=""
Local $JaNein[2]=[True, False], $Gesucht="", $Output, $i, $s
If $User="" Then $User=@UserName
If StringInstr($Host, "\\")=1 Then $Host=StringMid($Host, 3)
If $Host="" Then $Host="."
$NurEiner=$JaNein[$NurEiner=False]
$objWMIService=ObjGet("winmgmts:\\" &$Host &"\root\CIMV2")
If IsObj($objWMIService) Then
$colItems=$wbemFlagReturnImmediately+$wbemFlagForwardOnly
$colItems=$objWMIService.ExecQuery("SELECT * FROM Win32_AccountSID", "WQL", $colItems)
If IsObj($colItems) Then
For $objItem In $colItems
$s=$objItem.Setting
$s=StringMid($s, StringInStr($s, "SID=")+4) &@Tab
$s&=StringMid($objItem.Element, StringInStr($objItem.Element, "Name=")+5)
If StringInstr($s, Chr(34) &$User &Chr(34)) Then $Gesucht&=$s
$OutPut&=StringReplace($s, Chr(34), "") &@Cr
Next
If $NurEiner Then Return StringReplace($Gesucht, Chr(34), "")
Else
Return "Keine WMI-Objekte gefunden für Klasse: Win32_AccountSID"
Endif
Else
Return $Host &" ist nicht in diesem Netz.."
EndIf
EndFunc
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $Abbrechen
Exit
Case $msg = $OK
If GUICtrlRead($Arbeitsplatz) = $GUI_CHECKED Then
Arbeitsplatz()
EndIf
If GUICtrlRead($Eigene_Dateien) = $GUI_CHECKED Then
Eigene_Dateien()
EndIf
If GUICtrlRead($Papierkorb_leer) = $GUI_CHECKED Then
Papierkorb_leer()
EndIf
If GUICtrlRead($Papierkorb_voll) = $GUI_CHECKED Then
Papierkorb_voll()
EndIf
If GUICtrlRead($Netzwerkumgebung) = $GUI_CHECKED Then
Netzwerkumgebung()
EndIf
Exit
EndSelect
WEnd
Func Arbeitsplatz()
$Arbeitsplatz = FileOpenDialog("Icon für Arbeitsplatz auswählen", $verzeichnis, "Icons (*.ico)", 1 )
If @error Then
MsgBox(4096,"","Keine Datei ausgewählt")
Else
$Arbeitsplatz = StringReplace($Arbeitsplatz & ",0", "|", @CRLF)
RegWrite("HKEY_USERS\" & $var[1] & "\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon", "", "REG_SZ", $Arbeitsplatz)
EndIf
EndFunc
Func Papierkorb_leer()
$Papierkorb_leer = FileOpenDialog("Icon für Papierkorb leer auswählen", $verzeichnis, "Icons (*.ico)", 1 )
If @error Then
MsgBox(4096,"","Keine Datei ausgewählt")
Else
$Papierkorb_leer = StringReplace($Papierkorb_leer & ",0", "|", @CRLF)
RegWrite("HKEY_USERS\" & $var[1] & "\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon", "", "REG_SZ", $Papierkorb_leer)
RegWrite("HKEY_USERS\" & $var[1] & "\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon", "empty", "REG_SZ", $Papierkorb_leer)
EndIf
EndFunc
Func Papierkorb_voll()
$Papierkorb_voll = FileOpenDialog("Icon für Papierkorb voll auswählen", $verzeichnis, "Icons (*.ico)", 1 )
If @error Then
MsgBox(4096,"","Keine Datei ausgewählt")
Else
$Papierkorb_voll = StringReplace($Papierkorb_voll & ",0", "|", @CRLF)
RegWrite("HKEY_USERS\" & $var[1] & "\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon", "full", "REG_SZ", $Papierkorb_voll)
EndIf
EndFunc
Func Eigene_Dateien()
$Eigene_Dateien = FileOpenDialog("Icon für Eigene Dateien auswählen", $verzeichnis, "Icons (*.ico)", 1 )
If @error Then
MsgBox(4096,"","Keine Datei ausgewählt")
Else
$Eigene_Dateien = StringReplace($Eigene_Dateien & ",0", "|", @CRLF)
RegWrite("HKEY_USERS\" & $var[1] & "\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{450D8FBA-AD25-11D0-98A8-0800361B1103}\DefaultIcon", "", "REG_SZ", $Eigene_Dateien)
EndIf
EndFunc
Func Netzwerkumgebung()
$Netzwerkumgebung = FileOpenDialog("Icon für Netzwerkumgebung auswählen", $verzeichnis, "Icons (*.ico)", 1 )
If @error Then
MsgBox(4096,"","Keine Datei ausgewählt")
Else
$Netzwerkumgebung = StringReplace($Netzwerkumgebung & ",0", "|", @CRLF)
RegWrite("HKEY_USERS\" & $var[1] & "\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{208D2C60-3AEA-1069-A2D7-08002B30309D}\DefaultIcon", "", "REG_SZ", $Netzwerkumgebung)
EndIf
EndFunc