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.

Vcenter Server Phase 2 Installation stürzt ab mit Meldung „Failed to connect to SSO“

Vmware VCenter Server 6.5 / Failed to connect to SSO

Für einen Kunden habe ich einen neuen Vcenter Server (VCSA) aufgesetzt und kämpfte mit dem Problem, dass die Phase 2 der Installation der Installation fehlschlug mit der Meldung:

„Failed to connect to SSO“

Ursache waren zwei Probleme:

  1. Der Domain Name des VCenter Servers ließ sich nicht per DNS auflösen –> Im verantwortlichen Domain Controller habe ich im DNS einen A-Record angelegt, so dass sich das FQDN ohne Probleme mit nslookup auflösen ließ
  2. Der VMware Identity Management-Dienst ließ sich laut Fehlerprotokoll nicht starten

vmware-stsd[1762]: has address 127.0.0.1. Request for http://localhost:7080/afd failed after 10 seconds. Status: /usr/bin/curl status. Response: 000. Host: localhost has address 127.0.0.1. Request for http://localhost:7080/afd failed after 10 seconds. Status: /usr/bin/curl status. Response: 000.

Lösen ließ sich das Problem dank des Blog-Beitrags von Christian Stankowic mit dem folgenden Workarround

Nach der Ersten Phase der Installation empfiehlt es sich, einen Snapshot an der VCSA und dem installierenden Client zu machen, um nicht nach jedem Fehlversuch wieder von vorne anzufangen. Anschließend wird der zweite Schritt durch Ausfüllen der Formularfelder vorbereitet. Bevor Phase zwei der Installation gestartet wird, muss jedoch noch ein Schritt unternommen werden:

In der Konsole der VCSA habe ich mit Alt+F3 in die Konsole gewechselt und mich nach erfolgreichen Login mit der Shell verbunden:

> shell
# echo "::1 localhost.localdom localhost" >> /etc/hosts

Anschließend hat sich der VCSA-Server sich selbst mit „localhost“ wieder erfolgreich aufgelöst und die Installation ist  erfolgreich durchgelaufen.

Docker Container automatisch mit Boot von Ubuntu starten

Um mittels Docker Containern Dienste verlässlich, stabil und mit minimalem Wartungsaufwand zu betreiben, ist es erforderlich, dass diese nach Start des Docker-Servers automatisch gestartet werden.

Dies passiert ganz einfach, indem dem Docker RUN Kommando eine einfache Option mit auf den Weg gegeben wird:

–restart always

Die Einstellmöglichkeiten rund um die Restart-Policy sind wesentlich vielfältiger und können hier nachgelesen werden.