# Windows # Windows Registry ### Meine eigenen Standard-Anpassungen Ihr kennt das: neues Gerät, frisches Windows, und erst mal die Feststellung, dass Windows doch so einige Dinge gegen euren Willen anders tut als ihr es erwartet. Microsoft ist halt auch noch nicht auf den Trichter gekommen, genau diese Einstellungen über Microsoft-Accounts zwischen Geräten zu synchronisieren... Das sind hier nur Dinge, die ich unbedingt brauche, die irgendwie ohne halt auch nicht gehen: ```Python Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System] ; Windows Hello für alle "AllowDomainPINLogon"=dword:00000001 ; Unschärfe ist eh blöd "DisableAcrylicBackgroundOnLogon"=dword:00000001 [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] ; Das müsste eh überall so sein "HideFileExt"=dword:00000000 ``` ### Crashkurs #### TL;DR - HKLM = Alle User - HKCU = nur aktueller User - wisst ihr doch, oder? Der Rest der Baumstruktur ist nahezu identisch, nur dass eines halt für die Maschine zieht und das andere nicht. - HKEY\_CLASSES\_ROOT = der Weg, wie Windows weiß, was mit euren Files gemacht werden soll. Hier spielt ihr rum, wenn euch irgendwelche Programme auf den Sack gehen. - HKLM überschreibt HKCU - das wäre nur logisch, oder? HKLM ist fast immer eine exakte Spiegelung von HKCU, von Werten her... Nur Extrasoftware schreibt Differenzen in den beiden Registry-Bäumen. weiter dann hier -> [MS Docs: Windows registry information for advanced users](https://docs.microsoft.com/en-us/troubleshoot/windows-server/performance/windows-registry-advanced-users) # Windows-Sicherheit (Enterprise) ### Fefe / Windows-Boardmittel-Sicherheit [https://blog.fefe.de/?ts=9c40177c?css=fefe.css](https://blog.fefe.de/?ts=9c40177c?css=fefe.css) Ich halte das hier mal fest, geht um [diese Präsentation](https://ptrace.fefe.de/Zero%20Trust/). Meine Vermutung ist, dass es sich dabei noch um OnPrem-Umgebungen handelt. 1. Software Restriction Policies 2. Office Makros ganz weg (Inklusive Plugins und Software die noch darauf beruht) 3. Zitat: "NTLM Auth weg, Credential Caching für Admins und generell Server abschalten, Debugging Rechte global abschalten und nur im Einzelfall erlauben. LAPS benutzen, auch für Server." 4. [ESAE](https://learn.microsoft.com/de-de/security/privileged-access-workstations/esae-retirement) 5. Hardwarekeys bzw. Smartcards für Admins (damit es keine Keylogger Passwörter gibt) 6. Exchange Split Permissions 7. Backup ohne Domänenmitgliedschaft, Firewall so dass Nur Backup zum Server kann aber nicht andersrum ### Grundkonzept Das unsicherste ist für den Anwender das bequemste, und demnach auch das vom Anwender bevorzugte. Alle Sicherungsmaßnahmen machen den eigentlichen Umgang mit dem System unbequemer. Daher ist die ideale Sicherheit ein Kompromiss aus Sicherung und Bequemlichkeit. ### Domänenabsicherung 1. Fullcloud-Entra / Exchange Online ohne Hybridbetrieb erreichen. 2. Zentrales User-Management via Microsoft Entra 3. Single-Sign-On aus Entra-Daten (weil: Psychologie: Müssen viele Accounts gepflegt werden, wird das gleiche Passwort überall verwendet) 4. Multifaktor-Authentifizierung mit Hardwarekeys (idealerweise via Biometrie) für alle Microsoft Entra Accounts. \- Alternativ: Multifaktor mit Windows 11 & TPM-Chip der Mainboards. Danach kommen Dinge wie Patchmanagement etc. Der Angreifer ist der, der beim unbedarften Anwender anruft, weil er einen Schriftverkehr dazu aus der vorne an der Straße stehenden Papiertonne gefischt hat. # DNS over HTTPS in Windows Leider nicht ganz Klickibunti hier. Nehmen wir als Beispiel mal [DNSforge](https://dnsforge.de/): ```Powershell netsh dns add encryption server=176.9.93.198 dohtemplate=https://dnsforge.de/dns-query netsh dns add encryption server=176.9.1.117 dohtemplate=https://dnsforge.de/dns-query netsh dns add encryption server=2a01:4f8:151:34aa::198 dohtemplate=https://dnsforge.de/dns-query netsh dns add encryption server=2a01:4f8:141:316d::117 dohtemplate=https://dnsforge.de/dns-query Get-ChildItem -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DohWellKnownServers' pause exit ``` Danach in den normalen Ethernet Einstellungen entsprechend auf Manuell umstellen. Dann ist auch die Verschlüsselung auswählbar. Ab Werk gibts Google, Quad9 und Cloudflare integriert, wie man am Registry Key sehen kann. [Halb geklaut von ZDnet](https://www.zdnet.de/88388444/windows-10-doh-bei-build-20236-aktivieren/), die haben im Artikel aber IPv6 übersehen. # Gratis HEVC Codecs (für .heic) [hier klicken...](ms-windows-store://pdp/?ProductId=9n4wgh0z6vhq) Ist ein OEM Setup Paket. Für einfache Handhabung muss man aber 99 Cent hinlegen, das OEM Paket ist natürlich nicht im Suchindex, wenn Microsoft damit schon Geld machen kann... # Scripts # Firewall Export to CSV ```powershell import csv txt_file = 'input.txt' csv_file = 'output.csv' with open(txt_file, 'r') as file: lines = file.readlines() # Entferne doppelte Leerzeichen zwischen den Spaltenwerten lines = [line.replace(' ', ' ') for line in lines] data = [line.strip().split('\t') for line in lines] with open(csv_file, 'w', newline='') as file: writer = csv.writer(file, delimiter=',') writer.writerows(data) print('Die TXT-Datei wurde erfolgreich in eine CSV-Datei umgewandelt.') ``` **Vorsicht:** [Nur ein schneller ChatGPT Vorgang](https://chat.openai.com/share/897ab652-0a8b-4281-bbbe-0a6dac50af7c) und kurz an Beispieldaten getestet. **Testet selbst, bevor Ihr das auf Produktivdaten loslässt!** # Bildsortierung

Kurze Vorwarnung dass dies hier überwiegend KI-generiertes Zeug ist. Hat funktioniert, muss aber nicht erneut funktionieren. Es ist wichtig dass ihr in Grundzügen nachvollziehen könnt, was die Scripts tun, auch wenn sie generiert sind.

Das hier wird sicherlich irgendwann mal kombiniert in nem großen Script dass dann gewisse Auswahl zulässt. ## Nach Bildauflösung Skript sammelt Bilder die kleiner als festgelegte Auflösung sind in einem anderen Ordner und belässt die, die größer sind im Ordner. Das Beispiel hier trennt Bilder >4K von denen die es nicht sind. ```powershell param ( [string]$SourceFolder = "C:\Path\to\SourceFolder", [string]$DestinationFolder = "C:\Path\to\DestinationFolder", [int]$MinWidth = 3840, [int]$MinHeight = 2160 ) # Create the destination folder if it doesn't exist if (-not (Test-Path $DestinationFolder)) { New-Item -ItemType Directory -Path $DestinationFolder | Out-Null } # Get all image files in the source folder and its subfolders $images = Get-ChildItem -Path $SourceFolder -Filter "*.jpg" -File -Recurse $totalImages = $images.Count $processedImages = 0 # Process each image file foreach ($image in $images) { Write-Host "Processing $($image.FullName)" # Use .NET classes to read image dimensions $imageStream = New-Object System.IO.FileStream($image.FullName, [System.IO.FileMode]::Open) $imageBitmap = New-Object System.Drawing.Bitmap($imageStream) $width = $imageBitmap.Width $height = $imageBitmap.Height $imageStream.Close() # Check if the image is smaller than the specified dimensions if ($width -lt $MinWidth -or $height -lt $MinHeight) { $destinationPath = Join-Path -Path $DestinationFolder -ChildPath $image.Name Write-Host "Moving $($image.FullName) to $destinationPath" Move-Item -Path $image.FullName -Destination $destinationPath } $processedImages++ $progress = [math]::Round(($processedImages / $totalImages) * 100, 2) Write-Progress -Activity "Moving images" -Status "Progress: $progress%" -PercentComplete $progress } Write-Progress -Activity "Moving images" -Status "Progress: 100%" -PercentComplete 100 Write-Host "Image move complete!" ``` ## Dedup (falls Copy statt Move im Script vorab gemacht wurde)

Das Ding tut noch nicht das was ich will, womöglich komme ich selbst durcheinander mit Source und Destination. Ich setz also unten noch mal anders an.

```powershell param ( # Mag etwas durcheinander und verkehrt sein. KI halt... Jedenfalls ist Destination der Ordner der über bleiben soll. und source der Ordner in dem die Duplikate liegen # Ordner in dem gelöscht wird. [string]$SourceFolder = "XXXXXXXXXXXXXXXXXXXXXXXXX", # Ordner gegen den Verglichen wird [string]$DestinationFolder = "XXXXXXXXXXXXXXXXXXXX", ) # Get all image files in the destination folder $destinationImages = Get-ChildItem -Path $DestinationFolder -Filter "*.jpg" -File # Initialize counters for deleted images in each folder $deletedInSourceFolderCount = 0 $deletedInDestinationFolderCount = 0 # Process each image file in the destination folder foreach ($destinationImage in $destinationImages) { Write-Host "Processing $($destinationImage.FullName)" # Construct the source file path based on the destination file name $sourceFilePath = Join-Path -Path $SourceFolder -ChildPath $destinationImage.Name # Check if the corresponding file exists in the source folder if (Test-Path $sourceFilePath) { Write-Host "Deleting $($sourceFilePath)" # Remove the item (move to Recycle Bin) Remove-Item -Path $sourceFilePath -Force -Confirm:$false # Increment the counter for deleted images in the source folder $deletedInSourceFolderCount++ } # Increment the counter for deleted images in the destination folder $deletedInDestinationFolderCount++ } # Output the deletion statistics Write-Host "Duplicate removal complete!" Write-Host "Deleted $deletedInSourceFolderCount images in the source folder: $SourceFolder" ``` ## Die Abwesenheit von Bildern >4K-Auflösung nachvollziehen ```powershell $SourceFolder = "C:\Path\to\SourceFolder" $MinWidth = 3840 $MinHeight = 2160 # Get all image files in the source folder and its subfolders $images = Get-ChildItem -Path $SourceFolder -Filter "*.jpg" -File -Recurse $totalImages = $images.Count $processedImages = 0 # Process each image file foreach ($image in $images) { # Use .NET classes to read image dimensions $imageStream = New-Object System.IO.FileStream($image.FullName, [System.IO.FileMode]::Open) $imageBitmap = New-Object System.Drawing.Bitmap($imageStream) $width = $imageBitmap.Width $height = $imageBitmap.Height $imageStream.Close() # Check if the image is larger than the specified dimensions if ($width -ge $MinWidth -and $height -ge $MinHeight) { Write-Host "Found large image: $($image.FullName)" } $processedImages++ $progress = [math]::Round(($processedImages / $totalImages) * 100, 2) Write-Progress -Activity "Checking image sizes" -Status "Progress: $progress%" -PercentComplete $progress } Write-Progress -Activity "Checking image sizes" -Status "Progress: 100%" -PercentComplete 100 Write-Host "Image size check complete!" ```
Alle Bilder > 4K löschen ```powershell $SourceFolder = "C:\Path\to\SourceFolder" $MinWidth = 3840 $MinHeight = 2160 # Get all image files in the source folder and its subfolders $images = Get-ChildItem -Path $SourceFolder -Filter "*.jpg" -File -Recurse $totalImages = $images.Count $processedImages = 0 # Process each image file foreach ($image in $images) { # Use .NET classes to read image dimensions $imageStream = New-Object System.IO.FileStream($image.FullName, [System.IO.FileMode]::Open) $imageBitmap = New-Object System.Drawing.Bitmap($imageStream) $width = $imageBitmap.Width $height = $imageBitmap.Height $imageStream.Close() # Check if the image is larger than the specified dimensions if ($width -ge $MinWidth -and $height -ge $MinHeight) { Write-Host "Deleting large image: $($image.FullName)" Remove-Item -Path $image.FullName -Force } $processedImages++ $progress = [math]::Round(($processedImages / $totalImages) * 100, 2) Write-Progress -Activity "Checking and deleting large images" -Status "Progress: $progress%" -PercentComplete $progress } Write-Progress -Activity "Checking and deleting large images" -Status "Progress: 100%" -PercentComplete 100 Write-Host "Image size check and deletion complete!" ```
# Downloads-Ordner sortieren

!!! WORK IN PROGRESS !!!

```powershell # Pfad zum Downloads-Ordner $downloadsPath = "$env:userprofile\Downloads" # Name des Ordners, in den alle nicht sortierten Ordner verschoben werden sollen $folderName = "Ordner" # Liste von Zielordnern und den zugehörigen Dateierweiterungen $folders = @{ "Dokumente" = @(".pdf", ".odt", ".doc", ".docx", ".rtf", ".txt") "Bilder" = @(".jpg", ".jpeg", ".png", ".gif", ".bmp") "Musik" = @(".mp3", ".flac", ".wav", ".m4a", ".aac", ".wma") "Archive" = @(".zip", ".rar", ".7z", ".tar", ".gz") "Setups" = @(".exe", ".msi") } # Erstellen des Ordners für nicht sortierte Dateien, falls er nicht vorhanden ist $otherFolderPath = Join-Path $downloadsPath $folderName if (-not (Test-Path $otherFolderPath)) { New-Item -ItemType Directory -Path $otherFolderPath | Out-Null } # Sortieren der Dateien Get-ChildItem $downloadsPath -Exclude $folderName | Where-Object { $_.PSIsContainer -eq $false } | ForEach-Object { $extension = $_.Extension foreach ($folder in $folders.Keys) { if ($folders[$folder] -contains $extension) { $targetPath = Join-Path $downloadsPath $folder Move-Item $_.FullName $targetPath return } } if ($_.Name -ne $folderName -and $_.Name -ne "Sonstige Dateien") { $otherFolderPath = Join-Path $downloadsPath $folderName Move-Item $_.FullName $otherFolderPath } } # Verschieben der verbleibenden Ordner in den Ordner für nicht sortierte Dateien Get-ChildItem $downloadsPath -Directory | Where-Object { $_.Name -notin $folders.Keys -and $_.Name -ne $folderName -and $_.Name -ne "Sonstige Dateien" } | ForEach-Object { Move-Item $_.FullName $otherFolderPath } # Schließen des PowerShell-Fensters Exit ``` Das Script erstellt Ordner und verschiebt Dateien darein. Alle sonstigen Ordner die in dem Downloads-Ordner verbleiben, werden in einen Ordner namens "Ordner" verschoben: Endresultat ist ein Downloads-Ordner mit sieben Ordnern der entsprechenden Dateitypen. Deutlich aufgeräumter als alles chronologisch rumliegen zu lassen. # OLED-Anpassungen OLED brennt ein, wie Plasma damals auch. Aber ohne OLED gibts kein Farbspektrum oberhalb der 16 Millionen Farben, daher werden wir wohl irgendwann OLED verwenden müssen. Bei TVs ist das wenig Problem, da brennt sich das Logo ein und gut ist. Bei Windows allerdings... Windows-Leiste, Browsertableiste, Favicons etc. - Taskleiste automatisch ausblenden - Desktop-Diashow aktivieren - Manche empfehlen gar Wallpaper-Engine, falls keine mehrfach-Desktops gewünscht sind. - Darkmode an. Weil hier dunklere OLED Pixel tatsächlich weniger Strom bedeutet - Display-Timeout auf ein paar Minuten stellen - Firefox-Symbolleiste "Firefox View" entfernen (oder Browser gleich im Vollbild laufen lassen) - [ClearType deaktivieren](https://www.heise.de/meinung/Windows-Schrift-Renderer-ist-seit-4-Jahren-kaputt-und-Microsoft-juckt-s-nicht-9217225.html) # Programme # Alternative Kopiertools - [FastCopy ](https://fastcopy.jp/)soll die Windows Kernelfunktionen weitestgehend umgehen und deshalb auch höhere Transferraten erreichen. - [TeraCopy](https://www.codesector.com/teracopy) ist einfach irgendein anderes Programm, um Dinge zu kopieren. Habe ich bisher nur genutzt um zusätzlich noch Prüfsummenchecks zu haben. - [Robocopy](https://docs.microsoft.com/de-de/windows-server/administration/windows-commands/robocopy) verwendet man eigentlich, weil in Windows mit drin. - [DD](http://man.he.net/?topic=dd§ion=all) kann unter Linux-Systemen auch bitweise kopieren. Damit hab ich ganz früher mal sogar Stick-Treiberchips versehentlich überschrieben. ### Prüfsummentools - [Checksum](https://github.com/ferventcoder/checksum) ist aus dem Chocolatey-Universum und tut eben das, was es unter Linux hätte getan, auch in Windows. - [fciv.exe](https://support.microsoft.com/de-de/topic/d92a713f-d793-7bd8-b0a4-4db811e29559) wäre das offizielle Pendant zu checksum in Windows - [HashCheck](https://github.com/gurnec/HashCheck/releases/) ist das Ganze in Klickibunti - [HashTab](https://www.heise.de/download/product/hashtab-30191) hab ich damals immer mit HashCheck verwechselt, weil so ziemlich 1:1 das Gleiche ist. Nur eben nicht mehr weiterentwickelt. # Mac Funktionen in Windows [PowerToys](https://docs.microsoft.com/de-de/windows/powertoys/) macht gewisse Funktionen, die man von Apple kennt, auch in Windows verfügbar. Das nette dabei: Ist halt auch von Microsoft programmiert, macht also womöglich eher weniger Probleme als Drittanbietersoftware. PDF Miniaturansicht und Vorschau, Anpassen der Fenstersnapping-Grenzen (FancyZones) etc... Irgendeine der Funktionen hat sicher jeder, der in der IT arbeitet, irgendwann schon mal benötigt und hat dann sicher irgendwas genommen, was nicht aus dem Hause Microsoft kommt... # SG TCP Optimizer Wegen [diesem Artikel bei Borncity](https://www.borncity.com/blog/2023/01/30/microsofts-tcp-murks-in-windows-10-und-11-optimierung-ist-mglich/)... In short: Weil Microsoft bei so etwas dann doch sehr auf Abwärtskompatibilität setzt, läuft Windows 10 und Windows 11 auf TCP-Einstellungen die über zwei Jahrzehnte alt sind - um eine möglichst große Breite an Netzwerkanschlüssen gleichzeitig supporten zu können und es den Devs bei Microsoft leichter zu machen nicht gleich auf jedem Rechner alles anders haben zu müssen oder irgendein System zu finden sich automatisch an verschiedene Netzwerkeigenschaften anpassen zu müssen. Übertrieben ausgedrückt: Nach diesen zwei Jahrzehnten arbeiten wir eben nicht mehr mit Dialup und an manchen Leitungen ist ein 8-Millisekunden-Ping echt viel, so dass es eigentlich nicht mehr jahrzehntealter Einstellungen benötigt. Checkpoint-Computer versteht sich natürlich vor jeder einzelnen Anpassung hiermit. Gibts von irgendwem [auch als Powershell-Script](https://github.com/MysticFoxDE/WINDOWS-OPTIMIZATIONS), aber eine GUI ist doch ein wenig schneller verstanden, oder? ### Download -> [für Chocolatey](choco://TCPOptimizer) ([Packageseite](https://community.chocolatey.org/packages/TCPOptimizer)) [Herstellerseite](https://www.speedguide.net/tcpoptimizer.php) ### Begriffserklärungen aus ChatGPT. Wie immer ohne Gewähr... 1. TCP Window Auto-Tuning: Dies ist ein Mechanismus, der es dem TCP-Protokoll ermöglicht, die Größe des Empfangsfensters automatisch an die Netzwerkbedingungen anzupassen. Durch diese Anpassung kann die Effizienz der Datenübertragung verbessert werden, indem Engpässe im Netzwerk vermieden werden. 2. Windows Scaling Heuristics: Dies ist ein Mechanismus, der von TCP verwendet wird, um die Größe des Empfangsfensters zu erhöhen, wenn es Verzögerungen im Netzwerk gibt. Das Verfahren verwendet eine Heuristik, um zu bestimmen, wie viel das Fenster vergrößert werden soll. 3. Congestion Control Provider: Dies ist ein Software-Modul, das von TCP verwendet wird, um den Datenverkehr auf einer Verbindung zu steuern, um Überlastung und Netzwerkstaus zu vermeiden. Es gibt mehrere Congestion Control Provider, die auf einem Windows-System verfügbar sind, z. B. CUBIC und New Reno. 4. Receive-Side Scaling: Dies ist ein Mechanismus, der von Windows-Servern verwendet wird, um die Verarbeitung von Netzwerkverkehr auf mehrere Prozessoren oder Prozessorkerne zu verteilen. Dadurch kann die Verarbeitungsleistung verbessert werden. 5. R.Segment Coalescing: Dies ist ein Mechanismus, der von TCP verwendet wird, um mehrere kleine TCP-Segmente zu einem größeren Segment zusammenzufassen. Dadurch können die Übertragungseffizienz und die Netzwerklatenz verbessert werden. 6. Time to Live: Dies ist ein Feld im IP-Header, das angibt, wie viele Router ein IP-Paket durchlaufen darf, bevor es verworfen wird. Dies hilft, Endlos-Routen-Schleifen zu vermeiden. 7. ECN Capability: Dies ist eine Funktion, die von TCP und anderen Netzwerkprotokollen verwendet wird, um Endgeräte zu informieren, dass eine Verbindung überlastet ist und Congestion Control-Verfahren verwenden sollte. ECN steht für Explicit Congestion Notification. 8. Checksum Offloading: Dies ist ein Mechanismus, der von Netzwerkadaptern verwendet wird, um die Berechnung der Prüfsummen von IP- und TCP-Paketen zu beschleunigen. Die Prüfsummenberechnung wird vom Netzwerkadapter durchgeführt, anstatt vom Hostsystem. 9. TCP Chimney Offload: Dies ist ein Mechanismus, der von Windows-Servern verwendet wird, um die Verarbeitung von TCP/IP-Verkehr auf den Netzwerkadapter auszulagern. Dadurch kann die CPU-Last auf dem Hostsystem reduziert werden. 10. Large Send Offload: Dies ist ein Mechanismus, der von Netzwerkadaptern verwendet wird, um die Übertragung großer Datenmengen zu beschleunigen, indem die Daten in größeren Einheiten an den Netzwerkadapter gesendet werden. 11. TCP 1323 Timestamps: Dies ist eine Funktion von TCP, die es ermöglicht, Zeitstempel in TCP-Segmenten zu verwenden. Dadurch kann die Round-Trip-Time (RTT) besser bestimmt werden, was wiederum zur Verbesserung der Congestion Control beitragen kann. 12. MTU Latency: Die Maximum Transmission Unit (MTU) bezeichnet die maximale Größe eines Datengramms, das über ein Netzwerk übertragen werden kann. Eine höhere MTU bedeutet, dass größere Datenmengen in einem Paket übertragen werden können, was die Netzwerklatenz reduzieren kann. Dies liegt daran, dass weniger Pakete für die Übertragung von Daten benötigt werden, was insgesamt die Effizienz der Datenübertragung erhöht. Wenn jedoch die MTU zu groß wird, können Probleme bei der Datenübertragung auftreten, insbesondere wenn Router auf dem Weg zwischen den Endpunkten des Netzwerks kleinere MTUs haben. In solchen Fällen muss die MTU möglicherweise reduziert werden, um eine reibungslose Datenübertragung zu gewährleisten. Die MTU-Latenz bezieht sich also auf die Verzögerung, die durch eine zu große MTU verursacht werden kann. # Fixes # deutsche CSVs in Windows reparieren Ich bin ja mehr so ein Fan davon sich an internationale Standards zu halten. Sprich CSV nur mit Semikolon als Trennzeichen erlaubt. Da bin ich aber in der Minderheit. Also: Control.exe -> "Datums-, Uhrzeit- oder Zahlenformat ändern" -> "Weitere Einstellungen..." -> Listentrennzeichen anpassen. oder eben "sep=," (oder was auch immer - im Notepad++ vor jede CSV ran) [Dank an Volker Weber und seinen irre materialistischen Blog](https://vowe.net/2022/02/06/excel-und-csv-richtig-konfigurieren/) # Verrückten Umgang mit Laufwerksbuchstaben reparieren Man muss sich ein wenig einlesen, aber richtig konfiguriert macht [USBDLM](https://www.uwe-sieber.de/usbdlm.html#download) all das, was Microsoft in der blödsinnigen Behandlung von Drives als Buchstaben aus dem Alphabet falsch macht oder zu Wünschen übrig lässt. Das macht noch nichts dagegen, dass das Alphabet eh nur 26 Buchstaben hat und man >26 Drives dann halt als Ordner mounten muss, aber zumindest gibts dann zuverlässige Buchstaben pro Gerät. Einfach die .chm Files öffnen und einlesen. Beispiel: Reservierte Drive Letters die USBDLM freihält, die Windows nicht belegen darf - und wenn doch - USBDLM automatisch mit anderen Buchstaben versieht... # Image Management (DISM, Sysprep, SCCM, Autopilot etc.) # DISM Editionswechsel Hier: [https://notizlo.ch/eine-windows-10-enterprise-iso-herunterladen/](https://notizlo.ch/eine-windows-10-enterprise-iso-herunterladen/) Die Überschrift hat sich die letzten Jahre als gewinnbringender herausgestellt als direkt mit DISM zu machen. Hatte halt damals noch niemand als "Enterprise ISO download" verkauft. In short: bei laufenden Systemen ``` dism /online /Set-Edition:Enterprise /productkey:NPPR9-FWDCX-D2C8J-H872K-2YT43 ``` bei ISO-Files - Media Creation Tool Download - ```Powershell Dism /Mount-Image /ImageFile:C:\temp\install.wim /MountDir:C:\wimfile Dism /Image:C:\wimfile /Set-Edition:Enterprise Dism /Unmount-Image /MountDir:C:\wimfile /Commit ``` Ist ganz praktisch, weil man dann auch gleich die künftige C-Platte manipulieren kann. Für direkte Programminjektionen würde ich aber Sysprep empfehlen. [Kreuzverweis auf c't 04/2014 hier](https://www.heise.de/select/ct/archiv/2014/4/seite-142), die haben mir damals die ganze Thematik schon näher gebracht. Lose Weitersammlung zusammengehöriger Dinge: Windows 10 KMS Keys: [https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/jj612867(v%3Dws.11)](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/jj612867(v%3Dws.11)) Windows 11 KMS Keys: [https://docs.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys](https://docs.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys) Aufgebohrtes MCT: [https://github.com/AveYo/MediaCreationTool.bat](https://github.com/AveYo/MediaCreationTool.bat) # 3rd-party Programme für Betriebssystemimages Kurze Liste der Dinge die ich mit in Windows-Images integrieren würde, weil sie doch recht zentrale Aufgaben erfüllen. Damit meine ich keine fetten Biester oder irgendwelche Anwender-Software, sondern Admin-Extrafunktionen, überwiegend Kommandozeile: - [ffmpeg](https://ffmpeg.org/download.html) - [yt-dlp](https://github.com/yt-dlp/yt-dlp) - [usbdlm](https://www.uwe-sieber.de/usbdlm.html) - [chocolatey](https://chocolatey.org/install) (eigentlich sollte man ja winget verwenden) - [git](https://git-scm.com/) - [gpg4win](https://www.gpg4win.de/download-de.html) - [sudo](https://github.com/janhebnes/chocolatey-packages/tree/master/Sudo) 😋 # Trojanerjagd Ganz früher gab es mal HijackThis. Das wird auch noch weitergeführt, allerdings als Fork, und das von einem Ukrainer. Wegen des Krieges mit Russland bitte vorsichtig sein: [https://github.com/dragokas/hijackthis](https://github.com/dragokas/hijackthis) (bei Sicherheit zählt halt auch sowas …) FRST – oder das Farbar Recovery Scan Tool – macht das Gleiche. [BleepingComputer-Downloadlink, weil Originaldownload hinter Adblock-Gemecker](https://www.bleepingcomputer.com/download/farbar-recovery-scan-tool/). Wichtig ist, dass weder HijackThis noch FRST irgendwas tut, das erstellt euch ein File mit allen Daten aus allen relevanten Bereichen in denen Trojaner und Viren drin sein könnten. Dienste, laufende Prozesse, etc. Früher gab es mal die berühmte Logfileauswertung, da konnte man dann alle Treffer mit Anomalien (z. B. Dienste deren Prozesse in einem anderen Speicherort liegen etc.) easy erkennen und die Dienste dann abschießen. Die gibts leider nicht mehr. Wenn man also selbst die Zeit nicht investieren will – die Logs sind umfangreich, weil halt alle Details zu allen relevanten Bereichen – kann man stattdessen das [https://www.trojaner-board.de](https://www.trojaner-board.de) damit nerven. Dort scheints i. d. R. folgender Prozess zu sein: 1. [https://www.malwarebytes.com/solutions/rootkit-scanner](https://www.malwarebytes.com/solutions/rootkit-scanner) 2. [adwCleaner](https://de.malwarebytes.com/adwcleaner/) und [Anleitung dazu](http://anleitung.trojaner-board.de/adwcleaner-anleitung-browser-viren-entfernen_24) 3. neues Logfile vom FRST fürs Forum. Die Logfiles von FRST oder HijackThis enthalten wie gesagt sämtliche Einträge, die relevant sein könnten. Ob diese Einträge dort richtig sind oder eine Anomalie darstellen ist dann eure Aufgabe. Das bedeutet in der Regel umfangreiche Recherchearbeit, um festzustellen, ob Einträge von Windows stammen, zu einem bestimmten Programm gehören oder von Drittanbieter-Software gewollt sind. Also ziemliche Fummelarbeit. # Multifaktor-Authentifizierung ### Hardwarekeys IMMER pingelig auf die Lieferung achten: Damals von Paypal die Karten (noch Symantec - auch um 2015 rum) hatten mehrfach Probleme: die erste ging gar nicht, die zweite kam in aufgerissenem und neu verklebtem Umschlag, die dritte kam okay an, hatte aber kaum noch Batterie, bis ich mir in Amerika persönlich ein anderes Symantec-Modell abgeholt hatte welches nicht im Scheckkartenformat ist. Nun unterstützt PayPal die Symantec nicht mehr, nur noch FIDO2. YubiKey Neo 2015 war okay, alles Originalverpackt Der Google Titan Key von 2023 hatte ein Siegelsticker, der scheinbar nicht sonderlich fest klebte und eine Hälfte davon nicht mehr "ums Eck" klebte.
- Windows 11 kann 2-Faktor-Authentifizierung im Web per Windows Hello. Das ist eine ziemlich dumme Idee, wenn die Maschine nicht permanent am Mann ist. Windows Hello bindet sich an den TPM-Chip auf dem Mainboard. Daher kann man das als Hardwarekey sehen. - genau so kann Dashlane inzwischen Passkeys speichern. Andere Passwortmanager sicherlich auch. Dashlane synchronisiert aber übers Internet. Passwortmanager vermurksen also den Begriff Hardwarekey, weil sie das rein an Software binden. - Blöd dazu ist dass Microsoft natürlich die Nutzung von Windows Hello als Passkey möglichst einfach gestaltet, während die echten USB-Securitykeys deutlich mehr Klicks zum Einrichten benötigen. Viele unbedarfte Anwender landen also in dem eigenen TPM-Chip auf dem Mainboard. (Psychologie: Weg des geringsten Widerstands bzw. ungelesenes Durchklicken der ersten Optionen) - Es gibt mehrere FIDO-Standards, ein YubiKey Neo aus 2015 funktioniert z.B. wegen dem älteren Standard nicht mit Microsoft, dafür aber mit Google und und fast überall anders auch, weil diese den alten Standard noch zulassen. - Auch Security Keys müssen also zumindest jedes Jahrzehnt ersetzt werden, weil sich die Standards und Sicherheitstechniken entwickeln. # Programm-Listenleichen entfernen ``` HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall ``` oder ``` HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall ``` Einträge durchgehen, nicht mehr benötigte entfernen. Das nimmt die Möglichkeit installierte Programme zu deinstallieren, also müsst ihr euch sicher sein dass ein Programm z.B. tatsächlich nicht mehr über die normalen Wege entfernt werden kann, oder schon entfernt ist, aber vergessen hat den Eintrag zu löschen. Die Uninstall.exe wird noch im Programmordner liegen, aber die in Windows integrierte Option wird dadurch verhindert. Können Hacker auch nutzen um Dinge zu installieren, sie aber nirgendswo anzeigen zu lassen. Passierte bei: [https://whalebird.social/](https://whalebird.social/) - mehrere Einträge in der Programmliste nach Installation neuer Version # Windows-Imaging und Deployment ### Voraussetzungen - [Windows ADK](https://learn.microsoft.com/de-de/windows-hardware/get-started/adk-install#download-the-adk-101253981-september-2023) installiert - [Windows 11 ISO](https://www.microsoft.com/de-de/software-download/windows11) auf kurzem Pfad im Unterordner von C:\\ vorliegend - Lokale Administrationsrechte - Am liebsten eine abgeschottete Maschine ohne Netzwerk. Arbeit mit WIM Images ist ein guter Sprungpunkt für Viren und Schadhaftes. ### Grundlagen - ISO Images sind mit aktuellen Archiver Programmen wie ZIP-files behandelbar. - Mir ist noch kein Weg ungergekommen den neuen Installationsprozess von Windows 11 mit angepassten WIM-Images zu nutzen. Man muss immer auf den Windows 10 Installer zurückfallen. Das OOBE aus dem Installer ist dann aber das moderne. - Mit DISM macht ihr Dinge wie Treiber und Feature-Aktivierungen vorab, mit Sysprep bastelt ihr eigene Programme mit ins Image, wobei das eigentlich eine Intune-Softwareverteilung sein sollte. - Es ist prinzipiell völlig egal welche Edition als Image gewählt wird, sofern man nicht mit den Education- oder N-Versionen (keine Medientreiber) arbeitet. Editionen sind hinterher alle mit dism /Online bügelfähig. - DISM /Online bezeichnet immer das aktuell laufende System, bei allem anderen müssen die Pfade mitgegeben werden. #### MediaCreationTool [Hier](https://www.microsoft.com/de-de/software-download/windows11), Punkt "Erstellen von Installationsmedien für Windows 11". - USB Modus: Schreibt MBR-FAT32 - ISO Modus: Lädt eine .ISO-Datei irgendwo hin bis vor kurzem gab es auch noch einen direkten CD-Brenn-Modus.

Das MCT lädt euch bestenfalls die ISO runter. Software wie [balenaEtcher](https://etcher.balena.io/) oder [rufus](https://rufus.ie/de/) schreiben euch weitaus verwendbareres GPT-NTFS.

#### Ventoy [https://www.ventoy.net/](https://www.ventoy.net/) Relativ Easy: Ein Stick formatieren, danach nur noch ISO-Files drauf, alle sind bootbar. Ich hab den Entwickler mal gefragt warum er wegen seiner Secure Boot Keys nicht den weg über die Hersteller nimmt um seinen Key in die Firmwares der Mainboardhersteller zu bringen, Antwort steht aus. Tut aber erst mal nix zur Sache, nur wirkt eine recht [spärliche Erklärung zum Import des Secure Boot Keys](https://www.ventoy.net/en/doc_secure.html) jetzt auch nicht unbedingt vertrauenserweckend. Ist so die Kategorie "deutlich einfacher zu verwenden, fällt dir aber trotzdem irgendwann auf die Nase"-Software. ### Dateitypen #### .swm Splitted WIM Vom Media Creation Tool erstellte USB sticks, wegen FAT32 gesplittet. Also Zusammenwalzen: ``` Dism.exe /export-image /sourceimagefile:install.swm /swmfile:install*.swm /sourceindex:1 /destinationimagefile:install.wim /CheckIntegrity ``` daraus kommt aber leider kein gültiges .wim image mit dem auch im Rahmen von dism.exe gearbeitet werden könnte.

der direkte ISO Download von Windows 11 hat noch install.wim

#### .esd erlaubt mit /Compress:Recovery bessere Kompression, sollte aber nahezu 1:1 mit .wim vergleichbar sein. Durchtauschbar mit: ``` dism /Export-Image /SourceImageFile:install.esd /SourceIndex:1 /DestinationImageFile:install.wim ``` Index muss mit dabei sein: ``` dism /Get-WimInfo /WimFile:install.esd ```

Ich würde wegen der Kompression eigentlich immer den Weg über die .esd gehen

#### .wim das klassische Imageformat mit dem man am liebsten arbeitet. Dahin bringe ich eigentlich immer alles bevor ich mit dem Mounting loslege. ### Vorbereitung 1. [ISO Download](https://www.microsoft.com/de-de/software-download/windows11) - Menüpunkt "Herunterladen eines Windows 11-Datenträgerimages (ISO)" - die anderen Optionen sind Köse. 2. ISO mit 7zip öffnen 3. Unterordner .\\sources öffnen 4. install.wim entpacken 5. Passendes Image raussuchen ``` dism /Get-Wiminfo /wimFile:install.wim ``` 6. mount Ordner erstellen 7. richtiges Image mounten ``` Dism /Mount-Image /ImageFile:install.wim /index:5 /MountDir:.\mount ``` ### Admin Tools ablegen

Merksatz: Dinge die ihr eventuell brauchen könntet... Keine Programme dahin direkt installieren, das ist später eine Sache von sysprep...

Jetzt habt ihr sicher immer irgendwas, was ihr so oder so im laufenden Betrieb braucht. Erstellt euch in dem mount Ordner jetzt einfach einen inst-Ordner (oder wie auch immer ihr den nennt) und legt da euer Zeug ab. [Office MDT Kit](https://www.microsoft.com/en-us/download/details.aspx?id=49117) oder so... Das landet dann bei den Rechnern automatisch mit auf der Systempartition. ### Treiber reinbasteln Kein Bock auf die Treibertools oder langwierige Optionale Updates? Ihr seid euch sicher dass ihr die Images oft auf Systemen des gleichen Herstellers installiert? Eure eigene Maschine ist zufällig genau eines dieser Systeme? Dann los: 1. Treiber aus dem aktuellen System holen: ``` dism /online /export-driver /destination:.\driver ``` Die würden auch unter %windir%\\System32\\DriverStore liegen, aber wir arbeiten mit DISM, lieber auch durch das Tool vorbereiten lassen. 2. Die Treiber ins Image rein: ``` dism /Image:.\mount /Add-Driver /Driver:.\driver /Recurse ``` ### Editionswechsel Falls das nicht durch Intune gemacht wird ``` dism /Image:.\mount /Set-Edition:Enterprise ``` ### Platz für mehr dism kann noch so viel mehr... Dafür ist aktuell keine Zeit das hier zu tippen. Kommt bei bedarf noch... ### Abschluss ``` dism /Unmount-Image /MountDir:.\mount /Commit dism /Export-Image /SourceImageFile:install.wim /SourceIndex:1 /DestinationImageFile:install.esd /DestinationName:"EUER FANCY IMAGE NAME" /Compress:recovery ``` Als ESD, weil Kompression. Durch die Bearbeitung wird das Image von ca. 4-5 GB doch recht gut aufgebläht. und dann mit dem Archiver Programm die install.wim durch die install.esd austauschen. ### Sysprep tbd...