Desktopsymbole schneller ändern

  • 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
    [autoit]


    #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 ###

    [/autoit] [autoit][/autoit] [autoit]

    $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"

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]