Windows ICON aus *.dll mit Nummer identifizieren [gelöst]

Probleme mit dem Desktop oder dem Datei Explorer?
Antworten
Benutzeravatar
Holgi
Elite
Elite
Beiträge: 2877
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 364 Mal
Danke erhalten: 461 Mal
Gender:

Windows ICON aus *.dll mit Nummer identifizieren [gelöst]

Beitrag von Holgi » 25.01.2025, 18:27

wieder mal etwas Spezielles:
es gibt ein ICON in der Windows System Datei %SystemRoot%\System32\shell32.dll
Das ICON sieht so aus:
Green.JPG
Ich möchte dieses ICON mit einem kleinen Powershell Script nutzen, welches mir eine Verknüpfung auf dem Desktop erstellt, um den Rechner neu zu starten

Code: Alles auswählen

C:\WINDOWS\System32\shutdown.exe /r /f /t 0
Problem:
in der shell32.dll sind Hunderte Icons enthalten und das fertige Script benötigt die ICON-Nummer zur Identifizierung.
Natürlich habe ich schon nach Lösungen gesucht. Z.b. mit Programmen hantiert, welche mir die Icons aus der shell32.dll extrahieren und da gibt es auch welche, wo eine Nummer dabei steht. Dumm nur, dass bei einigen dieser Programme ausgerechnet dieses grüne Icon mit dem RechtsPfeil nicht extrahiert oder andere, zwar das ICON extrahieren, aber die Nummer nicht stimmt.
Hier das Powershell Script:

Code: Alles auswählen

$DesktopPath = [Environment]::GetFolderPath('Desktop')
$ShortcutName = "Sofortiger Neustart.lnk"
$TargetPath = "%SystemRoot%\\System32\\shutdown.exe"
$Arguments = "/r /f /t 0"
$ShortcutPath = Join-Path -Path $DesktopPath -ChildPath $ShortcutName
$Shell = New-Object -ComObject WScript.Shell
$Shortcut = $Shell.CreateShortcut($ShortcutPath)
$Shortcut.TargetPath = $TargetPath
$Shortcut.Arguments = $Arguments
$Shortcut.WorkingDirectory = [System.IO.Path]::GetDirectoryName($TargetPath)
$Shortcut.IconLocation = "%SystemRoot%\\System32\\mobsync.exe"  # Icon für den Restart
$Shortcut.Save()
Die Zeile, die da geändert werden muss, ist diese:

Code: Alles auswählen

$Shortcut.IconLocation = "%SystemRoot%\\System32\\mobsync.exe"  # Icon für den Restart
Die sollte dann ungefähr so aussehen:

Code: Alles auswählen

$Shortcut.IconLocation = "%SystemRoot%\\System32\\shell32.dll,27"  # Icon für den Shutdown
nur eben ist die Nummer nicht die "27", sondern die von mir gesuchte Zahl.
Kann jemand von euch weiterhelfen?
LG
Holgi
user-48.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Holgi am 26.01.2025, 00:38, insgesamt 2-mal geändert.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114

Tante Google

Windows ICON aus *.dll mit Nummer identifizieren [gelöst]

Beitrag von Tante Google » 25.01.2025, 18:27


Benutzeravatar
moinmoin
★ Team Admin ★
Beiträge: 61609
Registriert: 14.11.2003, 11:12
Hat sich bedankt: 162 Mal
Danke erhalten: 873 Mal
Gender:

Re: Windows ICON aus *.dll mit Nummer identifizieren

Beitrag von moinmoin » 25.01.2025, 18:43

Mit dem Anolis Ressourcer wird es mir unter 290 angezeigt. :kopfkratz:
2.jpg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
Holgi
Elite
Elite
Beiträge: 2877
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 364 Mal
Danke erhalten: 461 Mal
Gender:

Re: Windows ICON aus *.dll mit Nummer identifizieren

Beitrag von Holgi » 25.01.2025, 19:24

das ist das von mir beschriebene Phänomen:
die Nummer stimmt nicht! Mit dem Script oben kommt als Desktop Icon das dabei heraus:
Neustart.JPG
oder ist das bei euch anders?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114

Benutzeravatar
DK2000
Legende
Legende
Beiträge: 9824
Registriert: 03.04.2018, 00:07
Hat sich bedankt: 207 Mal
Danke erhalten: 654 Mal
Gender:

Re: Windows ICON aus *.dll mit Nummer identifizieren

Beitrag von DK2000 » 25.01.2025, 20:41

Kommt auf die Version der Shell32.dll an. Bei Windows 10 (64bit DLL) wäre das "299".

For solche Zwecke verwende ich da den Icon Explorer: https://www.mitec.cz/iconex.html

Mit dem Tool kannst Du die Icons auch extrahieren (z.B. in eine neue .dll). Dann braucht man die sich nicht immer zusammensuchen und solange man da nicht selber an der Datei was ändert, verschieben sich die Nummern nicht mehr.

Benutzeravatar
Holgi
Elite
Elite
Beiträge: 2877
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 364 Mal
Danke erhalten: 461 Mal
Gender:

Re: Windows ICON aus *.dll mit Nummer identifizieren

Beitrag von Holgi » 25.01.2025, 21:04

unter Windows 11 kommt mit der 299 das dabei raus:
Neustart.JPG
da ich das Ganze mit einer unveränderten Windows 11 und autounattend.xml machen möchte, kommt eine Manipulation einer .dll leider nicht in Frage.
Verstehe jetzt aber immer noch nicht, warum ein ICON Tool eine Nummer wie 290 anzeigt (siehe @moinmoin), aber dennoch dabei etwas Anderes herauskommt.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114

Benutzeravatar
DK2000
Legende
Legende
Beiträge: 9824
Registriert: 03.04.2018, 00:07
Hat sich bedankt: 207 Mal
Danke erhalten: 654 Mal
Gender:

Re: Windows ICON aus *.dll mit Nummer identifizieren

Beitrag von DK2000 » 25.01.2025, 21:11

Die Shell.dll wird ja nicht verändert. Du erstellst halt eine neue DLL mir den von Dir gewünschten Icons.

Ansonsten, um welche Windows 11 Version geht es genau? Aber genau das Ocon, was Du sichts, finde ich bei mir gar nicht. Wo hat denn moinmoin das gefunden?

"176". Aber das ist nur 16x16. Nicht noch so schön aus. "290" passt da gar nicht.

Jens1976
Senior
Senior
Beiträge: 412
Registriert: 17.12.2016, 20:37
Hat sich bedankt: 14 Mal
Danke erhalten: 64 Mal
Gender:

Re: Windows ICON aus *.dll mit Nummer identifizieren

Beitrag von Jens1976 » 25.01.2025, 22:51

Ich habs bei meiner einen Kiste so gelöst, siehe Anhang. Im Zip is die Verknüpfung enthalten. einfach auf den Desktop entpacken. Wenn man dort dann Rechtsklick und dann auf "Eigenschaften". Dort kann man dann unter "Anderes Symbol" das gewünschte Icon auswählen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Wenn die Sonne der Intelligenz tief steht, wachsen auch geistigen Zwergen lange Schatten :-D

Benutzeravatar
Holgi
Elite
Elite
Beiträge: 2877
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 364 Mal
Danke erhalten: 461 Mal
Gender:

Re: Windows ICON aus *.dll mit Nummer identifizieren

Beitrag von Holgi » 25.01.2025, 23:08

"176"! war die Lösung. Danke @DK2000.
Der Mitec Icon Explorer zeigt die korrekte ID an. Hast du eine Erklärung dafür, dass andere ICON-Programme da andere IDs anzeigen, als die dann tatsächlich korrekt sind?
Die Auflösung ist mir egal. Reicht mir.
Powershell Script sieht also jetzt so aus:

Code: Alles auswählen

$DesktopPath = [Environment]::GetFolderPath('Desktop')
$ShortcutName = "Sofortiger Neustart.lnk"
$TargetPath = "%SystemRoot%\\System32\\shutdown.exe"
$Arguments = "/r /f /t 0"
$ShortcutPath = Join-Path -Path $DesktopPath -ChildPath $ShortcutName
$Shell = New-Object -ComObject WScript.Shell
$Shortcut = $Shell.CreateShortcut($ShortcutPath)
$Shortcut.TargetPath = $TargetPath
$Shortcut.Arguments = $Arguments
$Shortcut.WorkingDirectory = [System.IO.Path]::GetDirectoryName($TargetPath)
$Shortcut.IconLocation = "%SystemRoot%\\System32\\shell32.dll,176"  # Icon für den Shutdown
$Shortcut.Save()
Die Desktop-Verknüpfung, die dabei herauskommt:
Neustart.JPG
@Jens1976:
´hab ich früher auch so gemacht. Ist die einfachere Lösung.
Mittlerweile möchte ich aber nicht mehr mit vorgefertigten Dateien arbeiten, die dann irgendwo bei der Installation abgelegt sind ($OEM$ Ordner, CDROM ...) Es soll alles über Skripte "on-the-Fly" bei der Installation erstellt werden. Deshalb ja das Powershell-Script, welches die Verknüpfung erzeugt und dann dieser ein Icon zuordnet.
was genau macht eigentlich dieses "-d p:2:4" in "-r -f -t 30 -d p:2:4"?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114


Antworten