anti-spam-basics-fuer-versender-spf-dkim-dmarc-samuel-zeller-367977-unsplash

Spam? Gut oder Böse?

Spam-Mails gehören mittlerweile zum Alltag eines jeden Nutzers und Empfängers und in den meisten Fällen wird der Spam-Ordner nicht einmal mehr eines Blickes gewürdigt. Dabei kann es passieren, dass wichtige und legitime Mails aus Versehen als Spam eingestuft werden. Im weiteren Verlauf des Artikels wird sicher deutlicher, dass dies keinesfalls „Versehen“ oder „Zufall“ ist, sondern aus einer Menge an Gründen und Faktoren durch Algorithmen kalkuliert wird. So kann es passieren, dass Reservierungsbestätigungen oder die legitime Lotto-Gewinnbenachrichtigung nicht im Posteingang eintrifft – Millionengewinn verpasst, schade.
Falsch eingestufter Spam ist also nicht nur ärgerlich für Empfänger, sondern vor allem auch ein Problem für Absender. Der Kunde wird nicht erreicht, wichtige Nachrichten nicht übermittelt, Umsatz geht verloren, Vertrauen und Image wird beschädigt. Die direkten und undirekten Kosten für ein Unternehmen mit Spam-Problemen können enorm sein.
Im Folgenden schreibe ich über ein paar Basics im Bereich Anti-Spam-Maßnahmen für Versender. Ziel ist es, dass versandte Mails seltener fälschlicherweise als Spam erkannt werden.

Wie funktioniert Anti-Spam für Versender?

Wenn E-Mails beim Mailserver des Empfängers eintreffen, versucht dieser Server einzuschätzen, ob die Mail tatsächlich vom angegebenen Absender stammt und der Inhalt legitim und relevant für den Empfänger ist. Ein Großteil der technischen Anti-Spam-Maßnahmen betreffen die Validierung des Absenders im Schritt 1, hier gibt es viel Potential für Optimierung. Bei Schritt 2, dem Inhalt, gibt es eher ein paar formale und syntaktische Richtlinien.
Ich schreibe das How-To aus meiner Sicht als Webhosting-Kunde von All-Inkl. Bei anderen Webhostern sowie bei eigenen Root Servern können die nötigen Schritte abweichen. Schaut bitte in die FAQ/Hilfe eures Anbieters oder fragt hier in den Kommentaren, wenn ihr nicht weiter kommt. Für Root Server gibt es hier eine Anleitung, die recht ausführlich Hilfestellung gibt.

Überprüfung der Maßnahmen

anti-spam-basics-fuer-versender-spf-dkim-dmarc-gsuite-mx-check-toolboxEs ist unbedingt empfehlenswert wenn nicht sogar kritisch erforderlich, vor UND nach den folgenden Maßnahmen die Einstellungen zu überprüfen. Wie ist der aktuelle Zustand, wie sieht es danach aus? DNS-Änderungen sind für gewöhnlich innerhalb von Sekunden aktiv und extern sichtbar, kein Warten nötig.
Zum Testen eignen sich besonders die Online Tools MxToolBox und die GSuite Toolbox MX-Check. Prüft damit direkt nach jeder DNS Änderung nach – für gewöhnlich werden diese innerhalb von Sekunden übernommen und sind von extern sichtbar, ebenso die Resultate.
Nun aber zu den Maßnahmen:

#1 – SPF

SPF, Sender Policy Framework (Wikipedia, Standard), ist ein Standard zur Überprüfung des Absenders einer E-Mail und vermutlich der wichtigste Anti-Spam-Indikator. SPF ist eine TXT-Einstellung im DNS der Absender-Domain und leicht zu setzen. Etwas mehr Wissen erfordert unter Umständen das Generieren des TXT Eintrags. Hier muss beachtet werden, welche Mailserver und Maildienste für das Versenden der Mails benutzt werden. Wenn ich den Mailserver meines Webhosters nutze, jedoch Mails über die Googlemail Weboberfläche schicke (E-Mail über SMTP eingebunden), muss ich das im SPF-Eintrag beachten. Hierzu gibt es von fast allen Anbietern entsprechende Infos/Hilfeseiten, etwas googeln hilft hier schnell.
Ein beispielhafter SPF-Eintrag, der Google als Relay inkludiert, könnte so aussehen:
v=spf1 a mx include:_spf.google.com ~all
Kein ptr im SPF, wenn MX gesetzt ist, auch wenn das viele Generatoren immernoch machen. Überprüfung mit SPF Check der MXToolBox. Weitere Infos findet ihr bestimmt in der Hilfe eures Maildienstleisters/Hosters mit der Suche nach „SPF“.
anti-spam-basics-fuer-versender-spf-dkim-dmarc-spf-setup

#2 – DKIM

DKIM, DomainKeys Identified Mail (Standard, Wikipedia, DeBounce), ist wie SPF ebenfalls ein Protokoll zur Überprüfung von eingehenden Mails und deren unverändertem Inhalt.
DKIM nutzt zur Überprüfung eine asymmetrische Verschlüsselungstechnik mit zwei Schlüsseln – einem privaten Schlüssel, der Mails unsichtbar angehängt wird und einem öffentlichen Schlüssel, abgelegt im DNS des Absenders. Somit kann der Empfänger-Mailserver die Schlüssel aus dem Absender DNS und der Mail-Signatur gegeneinander prüfen und validieren. Das Hinzufügen des privaten Schlüssels in den Mailserver, damit dieser unsichtbar alle ausgehenden Mails damit signiert, erfordert eine fortgeschrittene Anpassung des Mailservers bzw. Konfiguration des Mailers und übersteigt den Rahmen dieses Artikels. Für GMail-Nutzer hilft die Google DKIM Step-by-Step-Anleitung, ansonsten wieder beim Anbieter/Hoster in der Hilfe schauen bzw. Support fragen.
Der zweite Teil besteht aus einem TXT DNS Record, der zuvor generiert werden muss. Benötigt wird dafür die Domain und ein „Selektor“; eine beliebige Zeichenkette, z.B. „meindkim1“. Der Record sollte immer mit v=DKIM1;k=rsa;p= anfangen! Selbst wenn die Generatoren gerne einen der Parameter v oder k weglassen, oder diese als optional angeben, sollten beide gesetzt sein. Info: Beide Überprüfungs-Tools (MxToolBox und GSuite MX-Check) bestätigen einen validen DKIM übrigens nur mit Parametern v UND k, Warnungen falls einer fehlt. Die Überprüfung von DKIM erfordert dann ebenfalls Domain und Selektor und sollte anschließend positiv ausfallen:
anti-spam-basics-fuer-versender-spf-dkim-dmarc-dkim-check
Aber Achtung: Ausschließlich den DKIM DNS Eintrag zu setzen, ohne die Mails zu signieren, hat keine weiteren positiven Auswirkungen (meistens aber auch keine negativen) und ist daher nicht zu empfehlen.

#3 – DMARC

DMARC, Domain-based Message Authentication, Reporting, and Conformance (Standard, Wikipedia):Was wie die deutsche alte Währung klingt, ist eine Technologie zur Erweiterung von SPF und DKIM. Geliefert werden zusätzliche Informationen, wie der Empfängerserver mit geprüften Mails umgehen soll sowie die Möglichkeit von Reports der Überprüfungen. Auch hier ein DNS TXT Eintrag, der die Infos liefert. Zwei grundlegende Fragen müsst ihr euch stellen:
1. Wie sollen Mails behandelt werden, deren SPF/DKIM-Überprüfung fehlschlägt? Ignorieren / Spam / Abweisen.
2. Sollen Daten und fehlgeschlagene Überprüfungen als Reports verschickt werden und an welche Mail-Adresse?
Solltet ihr mit „Ignorieren“ dem Empfangsserver kein Verhalten vorschreiben wollen und auch keinerlei Reporting wünschen (v=DMARC1;p=none;), erfüllt DMARC keinen Zweck und hat auch keine weiteren Effekte auf den Mailempfang, kann also ausgelassen werden.
Restriktiveres Verhalten oder Reporting gewünscht? Dann wird einer der vielen existierenden Generatoren aus den gewählten Optionen einen einfachen bis recht komplexen TXT Record erstellen:
v=DMARC1; p=none; rua=mailto:admin@it-stack.de; ruf=mailto:admin@it-stack.de; fo=1;
Dieser Eintrag schickt Reportings an mich, wenn SPF oder DKIM fehlschlägt sowie generelle Reports, der Mailserver soll die Fehlschläge jedoch wie gewohnt behandeln, ich gebe kein strikteres Vorgehen vor.
anti-spam-basics-fuer-versender-spf-dkim-dmarc-check

#4 – Blacklists

Es gibt eine Vielzahl von professionell betriebenen Anti-Spam-Listen, also Blacklists, die von Mailservern zur weiteren Überprüfung abgefragt werden können. Ob mein Mailserver auf einer Blacklist steht, kann ich beispielsweise mit der MxToolBox Blacklist Suche herausfinden. Gebt hier eure Domain ein und eine Auswertung von über 100 Blackslists wird eventuelle Funde aufzeigen. Solltet euer Mailserver nicht die IP eurer Domain teilen oder weitere in das Mailing involvierten MX-Server-IPs bekannt sein, diese am besten auch noch testen.
Eure Domain/IP ist in einer Blacklist gefunden worden? Das ist unpraktisch, kann aber mal passieren. Geblacklistet werden für gewöhnlich ganze Server. Auf einem Shared Server, wie das bei Webhosting fast immer der Fall ist, sind, je nach Vertrag, 20 bis 100 weitere Kunden untergebracht. Die Chance, dass ein anderer Kunde für das Blacklisting verantwortlich ist, ist hoch.
Was tun? Auf der Betreiberseite der Blacklist gibt es meistens Suchen/Informationsportale, in denen Blacklist-Kandidaten, teilweise mit mehr Details und Begründung, gesucht werden können. Ich empfehle zwei Recherchen: Suche nach der Domain und nach der/den IPs.
So kann es sein, dass die IP-Adresse des Servers in mehreren Einträgen gefunden wird (Reportfunde bei Spamhaus ZEN: Link1, Link2, in welchen wiederum eure Domain nicht erwähnt wird), für die Domain jedoch kein Eintrag vorhanden ist. Das sind weitere Hinweise darauf, dass nicht ihr, sondern ein anderer Kunde des Servers Schuld hat.
Unabhängig von diesen Recherchen könnt ihr vermutlich wenig gegen das Blacklisting tun. Manche Betreiber bieten Unblock Formulare an, andere nicht. Informiert auf jeden Fall euren Webhoster/Mailing-Anbieter mit allen herausgefundenen Informationen über das Blacklisting – dieser hat für gewöhnlich andere Optionen und kann direkt selbst in die Behandlung der Problemursache, also gegen entsprechende Kunden, vorgehen.
anti-spam-basics-fuer-versender-spf-dkim-dmarc-blacklist-check

#5 – User Trust

Desweiteren hilft es, sich zusätzlich Trust über den User/Empfänger zu holen – beispielsweise durch das Hinzufügen eurer Absenderadresse zu den Kontakten, das Markieren der Nachrichten als „Wichtig“ oder Versehen mit Sternchen/Markern (je nach Client heißt das anders), den Absender „Nie als Spam markieren“ (ebenfalls je Client anders) und mehr. Alles, was man mit einer Mail oder einem Absender bei dem jeweiligen Anbieter des Empfängers tun kann, dass letztlich einen positiven Effekt hat. Die Anbieter speichern solche Informationen (wie oft wurde eine Mail mit Inhalt X positiv behandelt, wie oft der Absender usw.) und behandeln Mails dieses Absenders zukünftig besser. Diese Maßnahme kann man bis zu einer gewissen Anzahl mit den eigenen Mitarbeitern starten – Mails an ihre private Mailadresse schicken, bestenfalls bei unterschiedlichen Anbietern, und die Mails von ihnen „positiv behandeln“ lassen.

Wie gut kennt ihr die Funktionen und Möglichkeiten von Whatsapp? Über 20 fortgeschrittene Whatsapp Tipps & Tricks findet ihr in diesem Artikel!

whatsapp-notizen-notebook-mysteries-vorbereitungen-banner
Frage: Whatsapp Notizen??
Antwort: Auf jeden Fall! Für viele ist Whatsapp zu einem sehr zentralen Bestandteil des Alltags/Lebens geworden, warum also keine Notizen schnell dort reinschmeißen. Ich nutze Whatsapp gerne als persönlichen kleinen Notizzettel – Texte, Links, Bilder. Inhalte zu Whatsapp teilen geht immer schnell und einfach und ist praktisch überall verfügbar. Ich möchte aber natürlich keine Whatsapp-Kontakte mit meinen Notizen nerven.

Frage: Wie mache ich das?
Antwort: Ich habe einen extra Kontakt bzw. eine Gruppe namens „Notizen“. Im Falle einer Gruppe bin ich das einzige Gruppenmitglied, wodurch niemand belästigt wird.

Frage: Wie erstellt man das?
Antwort: Den Kontakt erstelle ich einfach direkt bei Whatsapp – ein neuer Telefonkontakt mit dem Namen „Notizen“ und meiner eigenen Telefonnummer. Dadurch erhalte ich einen leeren Chat mit mir selbst.
Zum Erstellen einer Gruppe wird immer ein weiterer Kontakt benötigt, das lässt sich leider nicht umgehen. Hier kann ich also eine Gruppe namens „Notizen“ mit einem beliebigen Kontakt neu erstellen und diesen Kontakt direkt wieder aus der Gruppe werfen. Tadaa, nun habe ich eine Gruppe nur mit mir selbst als Teilnehmer.

whatsapp-notizen-notebook-mysteries-vorbereitungen_komplettwhatsapp-notizen-notebook-mysteries-chat

adobe-reader-dc-2018-deployment-ad-windows-guide-banner-thomas-kvistholt-191153Nachdem ich Ende 2016 noch das Deployment von Adobe Reader DC mit der alten AIP-Methode beschrieben hatte, gibt es jetzt ein Update, eine neue Deployment-Methode, die super schnell und einfach ist und viel weniger Schritte benötigt. Statt wie bisher das gewünschte Adobe Update direkt in die primäre Installation zu slipstreamen (einzubinden), wird der Patch jetzt per Befehl an die msiexec Installation übergeben und mitinstalliert. Damit entfällt die komplette AIP-Erstellung, was Zeit und CMD-Getippe spart.

Download & Vorbereitung

Ihr benötigt natürlich immernoch die aktuellste Reader DC Version als .exe Download von der Adobe Download Seite.
Die .exe Datei dann einfach in einen Ordner entpacken und ihr erhaltet die typischen MSI-Deployment Daten.

Anpassung

Wenn ihr zusätzlich die Sprache der Verteilung festlegen wollt, öffnet die setup.ini und ergänzt dort einige Zeilen:

[Startup]
RequireMSI=3.0
CmdLine=/sl"1031" /sall /rs

[Product]
PATCH=AcroRdrDCUpd1800920044.msp
msi=AcroRead.msi
CmdLine=TRANSFORMS="[yourmstfile].mst"
Languages=1031
1031=German

[MSI Updater]
Path=http://ardownload.adobe.com/pub/adobe/reader/win/8.x/8.0/misc/WindowsInstaller-KB893803-v2-x86.exe

Anschließend benutzt ihr den Adobe Customization Wizard, wie gewohnt, um eine .mst Transform-Datei zu erstellen, die eure Einstellungen enthält.
adobe-reader-dc-2018-deployment-ad-windows-guide-update-customization-wizard

Das war’s auch schon.

Deployment

Beim Deployment ändert sich der Aufruf der Installation:

msiexec /i "%wd%\deploy\%version%\AcroRead.msi" PATCH="%wd%\deploy\%version%\AcroRdrDCUpd1800920044.msp" TRANSFORMS="LEAP.mst" /qb

Ändert hier und in der setup.msi den Namen der .mst in eure .mst Datei und passt auch wieder die Pfade am Anfang des Deployment-Skripts an. Für das Cleanup braucht ihr auch ein paar zusätzliche Cleanup-Tools von Adobe, die ihr ggf. noch herunterladen und im Ordner ablegen müsst.

@echo on & Color 9f & setlocal
set wd=\\server\Deployment\Software\Reader
set log=%wd%\reader-log.txt
set tools=\\server\Deployment\Sonstiges\tools
set readerEL=999
set retry=0
set forcecleanup=yes
:: set deactivateToolsSidebar=yes
set exepath=none
set instversion=0.0
REM:: ******************
set version=18.009
REM:: ******************

REM:: Clientfilter: nur die Computer aus der allowedPCs.txt dürfen installieren
::for /f %%f in (%wd%\allowedPCs.txt) do if "%computername%"=="%%f" goto start
::goto end

REM:: Clientfilter: die Computer aus der deniedPCs.txt dürfen nicht installieren
for /f %%f in (%wd%\deniedPCs.txt) do if "%computername%"=="%%f" goto end

:start
if exist "c:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" set exepath="c:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"
if exist "c:\Program Files\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" set exepath="c:\Program Files\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"
if %exepath%==none goto install
goto checkversion

:checkversion
for /f "tokens=1-3" %%i in ('%tools%\sigcheck %exepath%') do ( if "%%i %%j"=="File version:" set instversion=%%k )
%tools%\VersionCompare.exe %instversion% %version%
set versionEL=%errorlevel%
if "%versionEL%"=="-1" goto beforeinstall
if "%versionEL%"=="0" echo %date% %time:~0,8% - %computername% hat bereits %instversion% installiert >> %log%
if "%versionEL%"=="1" echo %date% %time:~0,8% - %computername% hat bereits %instversion% (neuer) installiert >> %log%
goto end

:beforeinstall
if "%forcecleanup%"=="yes" goto cleanup
goto install

:cleanup
echo %date% %time:~0,8% - %computername% deinstalliert alle Reader Versionen... >> %log%
REM:: uninstall all reader versions
taskkill /im acrord32.exe /t /f
taskkill /im acrord64.exe /t /f
ping localhost -n 3
::start /w %wd%\cleaner\reader-cleaner-9.exe /silent /product=1
::start /w %wd%\cleaner\reader-cleaner-10.exe /silent /product=1
start /w %wd%\cleaner\reader-cleaner-dc.exe /silent /product=1
echo %date% %time:~0,8% - %computername% hat alle Reader Versionen deinstalliert... >> %log%
goto install

:install
echo %date% %time:~0,8% - %computername% (%instversion%) startet die Installation... >> %log%
::start /w "" "%wd%\deploy\%version%\setup.exe"
msiexec /i "%wd%\deploy\%version%\AcroRead.msi" PATCH="%wd%\deploy\%version%\AcroRdrDCUpd1800920044.msp" TRANSFORMS="LEAP.mst" /qb
set readerEL=%errorlevel%

if %readerEL%==1618 goto retry REM:: msiexec process in use, installation already in progress
if %readerEL%==1602 goto retry REM:: user canceled installation
if %readerEL%==1603 goto retry REM:: fatal error, some use it for "already installed" (eg. java)
echo %date% %time:~0,8% - %computername% hat die Installation abgeschlossen, Errorlevel: %readerEL%... >> %log%
if %readerEL%==0 md %wd%\deploy\%version%\complete\%computername%
goto end

:retry
if %retry%==1 goto retryfailed
echo %date% %time:~0,8% - %computername% hat die Installation abgeschlossen, Errorlevel: %readerEL%, retry in 5min... >> %log%
set retry=1
ping localhost -n 300 > nul
goto beforeinstall

:retryfailed
echo %date% %time:~0,8% - %computername% hat die Installation abgeschlossen, Errorlevel: %readerEL%, retry failed, end >> %log%
goto end

:end
endlocal
exit

Gruppenrichtlinien-Filterung

windows-ad-gpo-wmi-filter-intro-bannerDie Anweundung von Active Directory Gruppenrichtlinien lässt eine Filterung und Steuerung über verschiedene Techniken zu:

  • Verknüpfung mit OUs (die Voraussetzung ist gewissermaßen die erste Filterebene), Verknüpfungen aktivieren/deaktivieren
  • Sicherheitsfilterung mit Gruppen und Rechten
  • WMI-Filterung


Die ersten beiden sind gewissermaßen schon die Voraussetzung für das Erstellen und Anwenden einer Gruppenrichtlinie. Mit einer guten OU- und Gruppenstrukturen lassen sich bereits viele „Filter“ realisieren. Allerdings sind Rechte, Gruppen und OUs oftmals auch aufwändig in der Pflege.

Negativbeispiel: Mit einer „Windows10Clients“-Gruppe kann eine Filterung auf Sicherheitsebene vollzogen werden. Dazu muss die „Windows10Clients“-Gruppe jedoch händisch von den Admins gepflegt werden – neue Clients rein, alte Clients raus. Ebenso eine „SalesPCs“-Gruppe. In größeren Strukturen ist das nicht umsetzbar und geht auch einfacher.

Erweiterte Gruppenrichtlinienfilterung mit WMI

Hier kommen WMI-Filter ins Spiel. WMI, Windows Management Instrumentation, ist praktisch eine Schnittstelle zum Windows System, welches über Abfragen in einer Art SQL (WQL genannt) bedient wird und Informationen über das abgefragte System liefert. Solche Abfragen können ebenfalls für die Filterung von GPOs verwendet werden.

Beispiel: Wenn eine GPO nun also nur für Windows 10 Clients oder nur für Clients älter als Windows 10 übernommen werden soll, lassen sich die Clients super easy über WMI herausfiltern. Keine OU, keine Gruppen, nur 1 WMI-Objekt, im Endeffekt nur eine Zeile Code.

Mit Google oder Tools wie dem WMI Code Creator von Microsoft lassen sich somit schnell die benötigten Abfragen erstellen:
windows-ad-gpo-wmi-filter-code-creator-classes-processor-executewindows-ad-gpo-wmi-filter-code-creator-classes

Codebeispiele

Die Möglichkeiten sind vielseitig, hier ein paar Beispiele:

/* 32bit / 64bit */
SELECT * FROM Win32_OperatingSystem WHERE OSArchitecture = '32-Bit'
SELECT * FROM Win32_OperatingSystem WHERE OSArchitecture = '64-Bit'
/* Computername beginnt mit "vpc-" */
SELECT * FROM Win32_ComputerSystem WHERE Name LIKE 'vpc-%'
/* Sprache des Betriebssystems ist Deutsch */
SELECT * FROM Win32_OperatingSystem WHERE CountryCode = '49'
/* Internetexplorer ist in Version 8 installiert */
SELECT * FROM CIM_DataFile WHERE Filename = 'iexplore' AND version > '8.0' AND (path = '\\programme\\Internet Explorer\\' OR path = '\\program files\\Internet Explorer\\' )

via

Betriebssystemversion

Zum Erkennen des Betriebssystems eignen sich einige Variablen; von BuildNumber über Caption bis zu Version. Letztere ist einfach zu benutzen, da Microsoft für jede Betriebssystemversion plus dazu passende Servervariante die gleiche Version benutzt, weitere Infos dazu auf dieser Microsoft Seite.

/* Wählt alle Clients mit Windows Vista/7/8/8.1 (Nicht-Windows-10) */
SELECT * FROM Win32_OperatingSystem where Version like '6.%' and ProductType='1'
/* Windows 10 Clients only */
SELECT * FROM Win32_OperatingSystem where Version like '10.%' and ProductType='1'

Vorsicht: BuildNumber

Etwas nerviger ist die Abfrage der Windows Version anhand der BuildNumber, da diese nicht als Zahl sondern als String im System steht und somit einfache BuildNumber >= X Abfragen nicht funktionieren. Microsoft thematisiert das hier und wählt den Regex-ähnlichen Ansatz über die Anzahl der Ziffern in Kombination mit der BuildNumber. Auch Marc von gruppenrichtlinien.de verwendet WHERE BuildNumber > '5000' – das alles lief bei mir nicht zuverlässig. BuildNumber scheint mir ein schlechtes Werkzeug zu sein und ich gehe daher über die Betriebssystem Caption, die sehr standardisiert ist:

/* Windows 10 Clients */
SELECT * FROM Win32_OperatingSystem WHERE Caption LIKE '%10%' AND BuildNumber LIKE '[123456789][0123456789][0123456789][0123456789][0123456789]'
/* Alle Clients vor Windows 10 */
SELECT * FROM Win32_OperatingSystem WHERE NOT Caption LIKE '%10%' AND BuildNumber LIKE '[123456789][0123456789][0123456789][0123456789]'

Das hat bei Win7 und Win10 funktioniert wie erwünscht.
windows-ad-gpo-wmi-filter-in-use-os-version-buildnumber

Was? Warum?

Ich hatte letztens das Problem an einem Windows 10 Client, das nach einem Feature Update (auf 1709 glaube ich) plötzlich die Sprache des Betriebssystems auf Englisch war. Jedoch nur die Anzeigesprache, Tastaturlayout, Datum & Uhrzeit sowie Regionale Einstellungen waren alle noch auf Deutsch. Deutsch war als primäre Sprache noch eingestellt, aber ein zugehöriges Sprachpaket für die Anzeigensprache war nicht mehr verfügbar:
windows-10-anzeigesprache-manuell-installieren-language-pack-display-settings1windows-10-anzeigesprache-manuell-installieren-language-pack-display-settings2

Und obwohl auf etlichen Microsoft Seiten steht, dass man über diese Einstellungsdialoge einfach Sprachen mitsam Anzeigepaket herunterladen kann, funktioniert das in diesem Zustand nicht mehr. Auch das Löschen und erneute Einstellen der Deutschen Sprache bringt die Anzeigesprache nicht zurück.

Anzeigesprache mit .cab Sprachpaket installieren

So seltsam der Fehler auch ist, so selten wird er vermutlich sein. Aber dennoch, hier die Lösung:
Im Internet findet man nach einer kurzen Suche Sprachpakete als .cab Downloads, zum Beispiel bei Tobias Hartmann. Diese .cab Dateien könnt ihr dann manuell installieren in: Start -> Ausführen -> lpksetup – der Vorgang wird einige Minuten brauchen:
windows-10-anzeigesprache-manuell-installieren-language-pack-display-install1windows-10-anzeigesprache-manuell-installieren-language-pack-display-install2

Anschließend müsste bei der installierten Sprache auch wieder die Anzeigesprache in den Regionaleinstellungen angezeigt werden und nach einem kurzen Relogin ist das Betriebssystem auch schon auf die neue Sprache eingestellt.
windows-10-anzeigesprache-manuell-installieren-language-pack-display-install-complete

Microsoft, das geht doch bestimmt auch einfacher.

In manchen Fällen kann es hilfreich sein, die Audiowiedergabe bestimmter Tabs oder Domains zu manuell oder auch automatisch zu blocken. Automatisch startende Werbung, unerwünschte Soundeffects oder Ähnliches. 3 Möglichkeiten möchte ich euch hier zeigen:

Manuell: Kontextmenüeintrag

chrome-audiowiedergabe-blocken-tab-kontexteintragDas ist kein Geheimnis: Chrome hat im Rechtsklick-Kontextmenü der Tabs die Möglichkeit, diese stummzuschalten:
Per Klick auf den Menüpunkt lässt sich zwischen Stummschalten und Audiowiedergabe wechseln.

Besser wäre es natürlich, wenn man dafür nicht zwei Klicks (Rechtsklick und Linksklick) sondern nur einen Klick bräuchte:

Manuell: One-Click Lösung

chrome-audiowiedergabe-blocken-tab-single-click-resultWenn Chrome in einem Tab Audio wiedergibt, wird dies durch ein kleines Lautsprechericon im Tab angezeigt:
Es ist auch möglich, per einfachen Linksklick auf dieses Icon den Tab stummzuschalten.
Dazu muss vorher allerdings eine Chrome-Einstellung aktiviert werden, die ihr über folgende „URL“ erhaltet:
chrome-audiowiedergabe-blocken-tab-single-clickchrome://flags/#enable-tab-audio-muting
(Ihr müsst die URL kopieren und selbstständig in eure Adressleiste einfügen)

Nun möchte man vielleicht nicht nur einen Tab muten, oder es nicht immer manuell per Klick machen, sondern eine ganze Domain generell und automatisch stummschalten.

Automatisch: Alle Tabs einer Domain stummschalten

chrome-audiowiedergabe-blocken-domain-settingGanz neu, mit Chrome Version 62, kommt eine Einstellung namens „Sound content setting“, welche die Steuerung von Audiowiedergabe auf Domainebene ermöglicht. Nach dem Aktivieren der Funktion und einem Chrome Neustart, könnt ihr im Protokoll-Infobutton (links von der Adresszeile) nun „Ton“ aktivieren oder deaktivieren.
Einmal z.B. auf Youtube eingestellt, sind alle Tabs, auch zukünftige, stummgeschaltet.
Folgende Einstellung muss dafür aktiviert werden:
chrome://flags/#sound-content-setting
Bitte den Text in die Adresszeile kopieren. Wenn dann die Einstellung nicht direkt hervorgehoben wird, prüft bitte, ob ihr Chrome 62 installiert habt.

Offtopic: Chrome leise, restlicher Sound laut

Hängt nicht direkt mit Stummschalten zusammen aber ich höre öfter, dass manche diese System-Funktion noch nicht kennen:
Windows ermöglicht über einen Lautstärkemixer, die Lautstärke einzelner Programme getrennt voneinander zu verstellen:
chrome-audiowiedergabe-blocken-windows-mixer
Ihr findet diesen z.B. bei Windows 10 über das Kontextmenü eures System-Lautstärke-Icons -> „Lautstärkemixer öffnen“. Hier könnt ihr zum Beispiel Chrome insgesamt etwas leiser schrauben, Systemsounds runter, das Softphone aber auf Maximum. Das kann in manchen Situationen sehr hilfreich sein.

Skript als Admin via Kontextmenü

Powershell Skripte haben in der Handhabung einen kleinen Nachteil gegenüber Batch-Skripten: Sie lassen sich nicht einfach über das (Rechtsklick-)Kontextmenü als Administrator starten.
powershell-skripte-run-as-admin-standard-before

Kontextmenüeintrag für ein bestimmtes Skript

Erstellt von der Skriptdatei eine Verknüpfung via Rechtsklick -> Senden an -> Desktop und öffnet die Eigenschaften dieser Verknüpfung. Unter Ziel wird der Pfad zur .ps1 Datei angegeben. Verändert das Ziel folgendermaßen:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass -NoExit "[Pfad]"

Optional kann über „Anderes Symbol…“ -> C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -> das Powershell-Icon mit UAC-Icon eingestellt werden. Somit ist die Verknüpfung visuell als eine Admin-fähige Verküpfung gekennzeichnet:
powershell-skripte-run-as-admin-shortcut-after-context-menu

Kontextmenüeintrag für jedes Skript

Noch besser: Der Kontextmenü-Eintrag „Als Administrator ausführen“ bei jeder Powershell-Datei, ohne Verknüpfung. Hierzu müssen in der Registry Änderungen gemacht werden, die sich am einfachsten über Batch Skripte ausführen lassen:

Kontextmenüeintrag hinzufügen:

:: Add value for UAC shield icon:
REG ADD "HKCR\Microsoft.PowerShellScript.1\Shell\runas" /v HasLUAShield /t REG_SZ /d "" /f
:: Add value to create context menu item:
REG ADD "HKCR\Microsoft.PowerShellScript.1\Shell\runas\command" /ve /t REG_EXPAND_SZ /d "\"%%SYSTEMROOT%%\System32\WindowsPowerShell\v1.0\powershell.exe\" -executionpolicy bypass -nologo -file \"%%1\"" /f

(Hinweise: Der Code MUSS mit Adminrechten in der CMD ausgeführt werden – entweder von Hand oder in einem .bat Skript zwischenlagern.)
powershell-skripte-run-as-admin-regedit-batch-commands
powershell-skripte-run-as-admin-regedit-after-context-menu

Kontextmenüeintrag wieder entfernen:

REG DELETE "HKCR\Microsoft.PowerShellScript.1\Shell\runas" /f

via