Windows 10 Neustart nach Update verhindern

Vor kurzem ist es mal wieder passiert. Ein Windows 10 Client, welcher rund um die Uhr wichtige Taskplanerereignisse abarbeitet, hat “ungefragt” Windows Updates installiert und sich anschließend neu gestartet.
Zu allem Überfluss hat er sich beim Neustart auch noch aufgehängt.

Einen Neustart in Windows 10 wirksam zu deaktivieren, sieht Microsoft in der Benutzeroberfläche von Windows gar nicht mehr vor. Es erzwingt einen gang in die Registry:

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU

Hier legt ihr, wenn er noch nicht existiert einen REG_DWORD-Wert an mit dem Namen

NoAutoRebootWithLoggedOnUsers

Diesen füllt ihr mit dem Wert “1”.

Anschließend einen neustart durchführen und Windows 10 sollte nach installiertem Update nicht mehr selbstständig neu starten!

Registry-Eintrag zum deaktivieren des automatischen Neustarts.  Setzen des Wertes NoAutoRebootWithLoggedOnUsers auf 1 in Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU

Nicht druckbare Zeichen in Java Strings lassen .equal oder .valueOf(String) fehlschlagen

Beim Vergleichen von Strings mit equal oder Enum Parsen mit “valueOf” gibt es keinen match, obwohl der String augenscheinlich identisch ist – Dieses Problem wird in diesem Beitrag erläutert:

Beim Parsen von CSV Dateien stößt man ab und zu auf Probleme mit der Encodierung der zu parsenden Datei.

Im konkreten Fall gestaltete sich das Problem als herausfordernd, weil auf den ersten Blick keine Ursache für das Problem erkennbar war.

Die geparste Variable nennt sich “rowTypeString” und hat im Debugger den Inhalt “RH”

debug screenshot - String "RH" sieht aus als wäre er 2 Zeichen lang, ist aber 3 Zeichen lang wegen nicht druckbarer Zeichen - aus diesem Grund schlägt ein Equal fehl
Augenscheinlicher Inhalt der Variable “rowTypeString” – nur zwei Zeichen mit dem Inhalt “RH

Im Quelltext wird jedoch die Variable über ein Enum mit der  “valueOf()”-Funktion geparst und einem eindeutigen Typ zugewiesen. Diese lief jedoch immer auf eine IllegalArgumentException hinaus.
Die Analyse des String ergab dann doch noch interessante Details:

  • Der String hat eine Länge von 3 Zeichen (auch wenn das dritte unsichtbar ist)
  • Ein Character Array gab auch interessante Details zurück:
char of string with hidden character
  • Die Methode rowTypeString.getBytes() gibt  zahlreiche Bytes zurück, welche auf das dritte Zeichen hindeuten:
    [-17, -69, -65, 82, 72]
  • Eigentlich dürfte das ByteArray nur [82,72] lauten für den String “RH”

Die Lösung konnte sich dann doch gut sehen lassen. Es werden alle “nicht druckbaren Zeichen” entfernt mit dem nachfolgenden regulären Ausdruck:

stringValue.replaceAll("[^\\p{Graph}\n\r\t ]", "");

Ich danke an dieser Stelle dem Verfasser einer Antwort in StackOverFlow

Kyocera Ecosys P2040dn Default Login

Kyocera Command Center RX beim P2040dn – Default Login

Aus gegebenen Anlass schreibe ich hier noch mal den Standard-Login für einen Kyocera Ecosys P2040dn auf, da man doch eine Weile googlen muss, um ihn zu finden:

Benutzername: Admin
Passwort: Admin

Wichtig ist wie immer die Groß/Kleinschreibung – sowohl beim Benutzernamen als auch beim Passwort.