Windows Systemstartreparatur

Einleitung

Die hier beschriebenen Befehle und Vorgehensweisen setzen eine umfangreiche Fachkentniss voraus und sollten nur von entsprechenden Personen genutzt werden. Die Benutzung geschieht auf eigene Gefahr und unter Ausschluß jeglicher Haftung. Insbesondere wird darauf hin gewießen, dass durch die hier genannten Befehle ein totaler Datenverlust möglich ist. Ein aktuelles Backup der Systeme sollte wo möglich immer vorhanden sein.

Leider zeigt die Praxis, dass auf IT-Systemen manchmal das Thema Backup schändlich vernachlässigt wird und dann Wiederherstellungsmaßnahmen wie hier beschrieben die einzige Rettung darstellen. Sollte der Leser die hier dargestellten Verfahren nicht vollumfänglich verstehen ist es jedoch sinnvoller professionele Hilfe hinzu zu ziehen.

Einzelne Punkte können hier übersprungen werden, sodass der Leser stets dort einsteigen kann wo es für Ihn und sein Fehlerszenario am sinnvollsten erscheint.

Wenn die Befehle unter Windows PE (bspw. von der Windows DVD) abgesetzt werden empfiehlt es sich zur Beschleunigung zunächst das Powerschema auf High Performance zu setzen:

# Powerschema auf High Performance setzen
powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635

Begriffsdefinition

Systempartition = Partition auf welcher die Systemstartumgebung (Bootloader) liegt; kann unter BIOS-basierten Systemen identisch mit der Startpartition sein; wird auf EFI-basierten Systemen auch als ESP (EFI System Partition) bezeichnet
Startpartition = Partition auf welcher die Startumgebung (das Windows) liegt
MSR = Microsoft Reserved-Partition; Leere Partition laut Microsofts Partitionsschema vorgeschrieben
Recoverypartition = Partition mit Windows RE (Recovery Environment) für Wiederherstellungsoptionen

Systemart prüfen

Zunächst ist zur prüfen, ob es sich um ein BIOS-basiertes System oder ein UEFI-basiertes System handelt. Bei UEFI-basierten Systemen ist es zwingend erforderlich, dass die Windows Systempartition und die Windows Startpartition auf einer GPT-formartierten Festplatte (mit GUID-Partitionstabelle) liegt. Auf BIOS-basierten Systemen ist die Festplatte MBR-formartiert. Dies sowie auch die Einstellungen im BIOS oder EFI können Anhaltspunkt über die Systemart geben.

Hinweis: Nur das Vorhandensein von EFI garantiert nicht, dass das System auch als UEFI-basiertes System angelegt ist. Im Legacy Mode kann trotzdem ein BIOS-basiertes System gebootet werden.

Systempartition reparieren

Seit Windows 7 unterhält Windows in der Regel eine ca. 100 MB große Systempartition welche den Bootloader enthält. In seltenen Fällen kann auf BIOS-basierten Systemen diese Partition entfallen sein und liegt dann auf einer anderen Partition; dann muss der Laufwerksbuchstabe selbst ermittelt werden. Um die Systempartition und damit auch den Bootloader zu reparieren muss die separate Systempartition zuerst mit einem Laufwerksbuchstaben ausgestattet werden um dann darauf zugreifen zu können:

diskpart
list disk
# Korrekte Boot-Festplatte ermitteln und ihren Index nachfolgend als N einsetzen
sel disk N
list part
# Die Systempartition ermitteln und nachfolgend als M einsetzen
sel part M
# Den Laufwerksbuchstaben V: zuweisen
assign letter=V:
exit

Der Laufwerksbuchstabe kann (und sollte auch unbedingt) später (ggf. in Windows) wieder entfernt werden.

Systempartition als aktiv markieren (nur BIOS-basierte Systeme mit MBR)

diskpart
list disk
# Korrekte Boot-Festplatte ermitteln und ihren Index nachfolgend als N einsetzen
sel disk N
list part
# Die Systempartition ermitteln und nachfolgend als M einsetzen
sel part M
# Bei BIOS-basierten Systemen die Partition als Startpartition markieren
active
exit

Der Befehl active sorgt dafür, dass die Partition als Startpartition in der Partitionstabelle markiert wird und ist nur für BIOS-basierte Systeme, nicht für UEFI-basierte Systeme relevant.

Systempartition erstellen

Sollte eine Systempartition komplett fehlen kann sie aus freiem Speicherplatz erstellt werden. Achtung: Es muss genügend freier, nicht zugewiesener Speicherplatz vorhanden sein! Ggf. ist dieser über andere Tools und Mechanismen zuerst zu schaffen.

Laut Microsofts Partitionslayout soll die Systempartition stets zu Beginn der Festplatte angelegt werden. Hinter ihr existiert nur auf UEFI-basierten Systemen eine 16 MB große MSR (Microsoft Reserved-Partition) ohne Inhalt. Es folgt dann die Startpartition (ugs.: Windows Partition). Am Ende der Festplatte soll dann die Recoverypartition angelegt sein.

Die Partitionsgröße der Systempartition beträgt mindestens 100 MB (Achtung: auf 4K Laufwerken mindestens 256 MB; auf 4K Laufwerken mit Advanced Format 512e-Erweiterung allerdings wieder nur mindestens 100 MB). Es spricht nichts dagegen die Systempartition größer anzulegen ist aber eigentlich unnötige Verschwendung von Speicherplatz.

UEFI-basierte Systeme

Die EFI-Systempartition (auch ESP genannt) ist vom MBR Partitionstyp 0xEF00  und hat den GPT Partitionstyp C12A7328-F81F-11D2-BA4B-00A0C93EC93B. Sie wird wie folgt erstellt:

diskpart
list disk
# Korrekte Festplatte ermitteln und ihren Index nachfolgend als N einsetzen
sel disk N
# Partition vom Typ EFI erzeugen
create partition EFI size=100

Die Mindestgröße der ESP beträgt 100 MB (Achtung: auf 4K Laufwerken ohne Advanced Format 512e-Erweiterung 256 MB).
Auf bereits bestehenden Systemen muss ggf. über den Parameter offset= der Punkt angegeben werden (in Kilobyte) an welchem die Partition erstellt werden soll.

Auf UEFI-basierten Systemen muss auch geprüft werden ob die MSR (GPT Partitionstyp: E3C9E316-0B5C-4DB8-817D-F92DF00215AE ) existiert und ggf. erstellt werden:

# Partition vom Typ MSR erzeugen
create partition MSR size=16

Die Mindestgröße der MSR beträgt 16 MB.
Auf bereits bestehenden Systemen muss ggf. über den Parameter offset= der Punkt angegeben werden (in Kilobyte) an welchem die Partition erstellt werden soll.

BIOS-basierte Systeme

diskpart list disk
# Korrekte Festplatte ermitteln und ihren Index nachfolgend als N einsetzen
sel disk N
# Partition vom Typ MBR primär erzeugen
create partition primary size=100

Die Mindestgröße der Systempartition beträgt 100 MB (Achtung: auf 4K Laufwerken ohne Advanced Format 512e-Erweiterung 256 MB).
Auf bereits bestehenden Systemen muss ggf. über den Parameter offset= der Punkt angegeben werden (in Kilobyte) an welchem die Partition erstellt werden soll.

Die Systempartition muss anschließend formatiert und befüllt werden. Dies wird im übernächsten Abschnitt erläutert.

Komplettes Partitionsschema erstellen

Im Falle einer kompletten Neuinstallation ist ein sauberes Partitionsschema neu zu erstellen. Dies sieht wie folgt aus:

UEFI-basierte Systeme

rem == CreatePartitions-UEFI.txt ==
rem == These commands are used with DiskPart to
rem    create four partitions
rem    for a UEFI/GPT-based PC.
rem    Adjust the partition sizes to fill the drive
rem    as necessary. ==
select disk 0
clean
convert gpt
rem == 1. System partition =========================
create partition efi size=100
rem    ** NOTE: For Advanced Format 4Kn drives,
rem               change this value to size = 260 ** 
format quick fs=fat32 label="System"
assign letter="S"
rem == 2. Microsoft Reserved (MSR) partition =======
create partition msr size=16
rem == 3. Windows partition ========================
rem ==    a. Create the Windows partition ==========
create partition primary 
rem ==    b. Create space for the recovery tools ===
shrink minimum=500
rem       ** NOTE: Update this size to match the
rem                size of the recovery tools 
rem                (winre.wim)                    **
rem ==    c. Prepare the Windows partition ========= 
format quick fs=ntfs label="Windows"
assign letter="W"
rem === 4. Recovery tools partition ================
create partition primary
format quick fs=ntfs label="Recovery tools"
assign letter="R"
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001
list volume
exit

BIOS-basierte Systeme

rem == CreatePartitions-BIOS.txt ==
rem == These commands are used with DiskPart to
rem    create three partitions
rem    for a BIOS-based PC.
rem    Adjust the partition sizes to fill the drive
rem    as necessary. ==
select disk 0
clean
convert mbr
rem == 1. System partition =========================
create partition primary size=100
rem    ** NOTE: For Advanced Format 4Kn drives,
rem               change this value to size = 260 ** 
format quick fs=fat32 label="System"
assign letter="S"
active
rem == 2. Windows partition ========================
rem ==    a. Create the Windows partition ==========
create partition primary 
rem ==    b. Create space for the recovery tools ===
shrink minimum=500
rem       ** NOTE: Update this size to match the
rem                size of the recovery tools 
rem                (winre.wim)                    **
rem ==    c. Prepare the Windows partition ========= 
format quick fs=ntfs label="Windows"
assign letter="W"
rem === 3. Recovery tools partition ================
create partition primary
format quick fs=ntfs label="Recovery tools"
assign letter="R"
set id=27
list volume
exit

Systempartition bereinigen

Um den Bootloader komplett zu löschen und neu anzulegen muss die Systempartition wie folgt formartiert werden:

# Systempartition formatieren
format V: /FS:FAT32 /V:"System"
# Dateisystem erzeugen (für BIOS-basierte Systeme)
md \Boot
# Dateisystem erzeugen (für UEFI-basierte Systeme)
md \EFI\Microsoft\Boot
cd /d V:\EFI\Microsoft\Boot\

Es können ohne Probleme beide Verzeichnise (BIOS-basiert und UEFI-basiert) angelegt werden.

MBR neu schreiben / Startsektor neu schreiben (nur BIOS-basierte Systeme mit MBR)

Nun kann ein neuer Startsektor in die Systempartition sowie ein neuer MBR auf die Festplatte geschrieben werden:

# Ab Windows 8 / Windows Server 2012
bootsect /nt60 SYS V: /mbr
# Vor Windows 8 / Windows Server 2012
bootrec /FixBoot
bootrec /FixMBR

Diese Vorgehensweise ist nur relevant für BIOS-basierte Systeme. UEFI-basierte Systeme verwenden eine andere Art der Erkennung des Bootloaders (siehe nächster Abschnitt). Es schadet jedoch nicht die BIOS-relevanten Befehele trotzdem zu setzen. Die Tools erkennen, welches Partitionierungsschema vorliegt (MBR oder GPT).

Startumgebung neu anlegen

Jetzt kann die Startumgebung neu erzeugt werden. Hierzu kopiert das Tool bcdboot die nötigen Startumgebungsdateien aus einem bereits installierten Windows Image.

Auf UEFI-basierten System fügt bcdboot im NVRAM automatisch einen Firmwareeintrag hinzu, um auf den Windows-Start-Manager zu zeigen. Standardmäßig wird dieser Eintrag als das erste Element in der Startliste platziert.

bcdboot C:\Windows /l de-de /s V: /f ALL

Der Pfad C:\Windows beschreit das Windows Image aus welchem die Startumgebungsdateien extrahiert werden.
Der Parameter /l beschreibt die Gebietsschemaeinstellung (Sprache) der Startumgebung
Der Patameter /s gibt den Laufwerksbuchstaben der Systempartition an
Der Parameter /f steuert den Firmwaretyp. Durch den Parameter ALL werden auf der Systempartition die nötigen Dateien für BIOS-basierte und UEFI-basierte Systeme angelegt. Er kann durch die Parameter UEFI oder BIOS ersetzt werden.

Für UEFI-basierte Systeme wird der Pfad \Efi\Microsoft\Boot auf der Systempartition erstellt und die nötigen Startumgebungsdateien dorthin kopiert.
Für BIOS-basierte Systeme wird der Pfad \Boot auf der Systempartition erstellet und alle nötigen Startumgebungsdateien dorthin kopiert.

Es können ohne Probleme beide Startumgebungsdateien (BIOS-basiert und UEFI-basiert) kopiert werden.

Windows Image prüfen und wiederherstellen

Ab Windows Server 2012 und Windows 8 muss zunächst eine Image-Reparatur erfolgen:

# Check the image state
dism /Image:C:\ /Cleanup-Image /ScanHealth
# Show the image state
dism /Image:C:\ /Cleanup-Image /CheckHealth

Der Parameter /Image:C:\ gibt den Root Pfad zum zu prüfenden Betriebssystem-Image an. Er kann durch den Parameter /Online ersetzt werden. /Online prüft das aktuell geladene Image. Im Fall eines geladenen Windows PE (bspw. von der Windows DVD) handelt es sich hierbei um das Image des Windows PE. Der Parameter /Online macht also nur bei Ausführung der Befehle in einem gebooteten Windows Sinn.

Nur wenn die Ausgabe repairable lautet kann eine Reparatur versucht werden. Im Falle der Ausgabe healthy kann direkt ein Integritätsscan der Systemdateien durchgeführt werden (siehe nächster Abschnitt). Lautet die Ausgabe non-repairable ist das Image leider gänzlich unbrauchbar.

dism /Image:C:\ /Cleanup-Image /RestoreHealth /LimitAccess /Source:$SOURCE /ScratchDir:C:\temp\

Für den Parameter /Image bzw. /Online gilt wie oben beschrieben.
Der Parameter /ScratchDir beschreibt das temporäre Verzeichnis zum entpacken des unter Source beschriebenen WIM Images und ggf. der Dateien aus dem Betriebssystem-Image. Unter Windows PE würde ohne Angabe dieses Parameters die (zu kleine) RAM-Disk verwendet werden. Das hier angegebene Verzeichnis muss existieren und sollte genug Speicher (>= 16 GiB) aufweisen.
Der Parameter /LimitAccess verhindert die Nutzung von Windows Update und sollte mit dem Parameter /Source verwendet werden, da Windows Update die Standardquelle ist.
Der Parameter /Source beschreibt von woher die Reparatur durchgeführt werden soll. Dies kann eine der folgenden Quellen sein:

  • Der Pfad zu einem bereits vorher händisch gemountetem WIM file (bspw.: C:\mount\Windows)
  • Eine laufende Windows-Installation (bspw.: C:\Windows)
  • Ein Windows side-by-side Ordner von einem Installationsmedium (bspw.: Z:\sources\SxS)
  • Ein WIM file unter Angabe des editionsspezifischen Indexes und dem Präfix WIM: (bspw.: WIM: Z:\sources\install.wim:1)

Für alle Pfade können auch Netzwerkfreigaben in SMB-Schreibweise verwendet werden.

Um den korrekten Index eines WIM files ermitteln zu können müssen dessen enthaltene Editionen zuvor wie folgt angezeigt werden:

dism /get-wiminfo /wimfile:"FILE"

Windows Systemdateien auf Integrität prüfen und wiederherstellen

Ab Windows Server 2012 und Windows 8 muss zunächst eine Prüfung und ggf. Reparatur des Windows Image erfolgen. Bei den Vorgängerbetriebssystemen (Windows 7, Windows Vista, Windows Server 2008 R2 oder Windows Server 2008) kann direkt hier fortgefahren werden.

Die Integritätsprüfung der Systemdateien wird wie folgt gestartet:

sfc /scannow

Mit dem Befehl sfc /scannow werden alle geschützten Systemdateien überprüft und die beschädigten Dateien durch eine zwischengespeicherte Kopie ersetzt, die sich in einem komprimierten Ordner unter %WinDir%\System32\dllcache befindet.

Da wir unter Windows PE wie oben beschrieben wieder nur die Systemdateien des Windows PE prüfen würden müssen wir auch hier den korrekten Pfad zum Betriebssystem angeben.

sfc /scannow /OffBootDir=C:\ /OffWinDir=C:\Windows

Der Parameter /OffBootDir entspricht dem Pfad zum Datenträger wo sich die Bootdateien befinden. Der Parameter /OffWinDir entspricht dem Root Pfad zum Windows Ordner.

Das Ergebnis der Integritätsprüfung kann im Gutfall eines der folgenden sein:

  • Der Windows-Ressourcenschutz hat keine Integritätsverletzungen gefunden.
  • Der Windows-Ressourcenschutz hat beschädigte Dateien gefunden und erfolgreich repariert.

Im Schlechtfall wird es einer der folgenden sein:

  • Der Windows-Ressourcenschutz konnte den angeforderten Vorgang nicht ausführen.
  • Der Windows-Ressourcenschutz hat beschädigte Dateien gefunden und konnte einige der Dateien nicht reparieren.

In ersterem Fall müssen wir händisch sicherstellen, dass die Ordner PendingDeletes und PendingRenames unter dem Ordner %WinDir%\WinSxS\Temp vorhanden sind und es danach erneut versuchen.

Im zweiten Fall müssen die beschädigten Dateien händisch repariert werden. Welche es sind findet sich in diesem Log: %WinDir%\Logs\CBS\CBS.log

Windows Systemdateien manuell reparieren

Wenn durch das Tool sfc  Dateien nicht repariert werden können ist eine manuelle Reparatur nötig. Die entsprechenden Dateien können aus dem Log %WinDir%\Logs\CBS\CBS.log wie folgt extrahiert werden:

findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >"C:\sfcdetails.txt"

Ein Eintrag in der nun erstellten Datei sfcdetails.txt sieht wie folgt aus:

2007-01-12 12:10:42, Info                  CSI    00000008 [SR] Cannot 
repair member file [l:34{17}]"Accessibility.dll" of Accessibility, Version = 
6.0.6000.16386, pA = PROCESSOR_ARCHITECTURE_MSIL (8), Culture neutral, 
VersionScope neutral, PublicKeyToken = {l:8 b:b03f5f7f11d50a3a}, Type 
neutral, TypeName neutral, PublicKey neutral in the store, file is missing

Es ist darauf zu achten, dass die Einträge das korrekte Datum aufweisen.

Die fehlerhaften Dateien müssen aus einem bestehenden Windows gleicher Versionierung und Edition kopiert werden. Anschließend können die Dateien wie folgt überschrieben werden:

takeown /f C:\Windows\system32\dummy.dll
icacls C:\Windows\system32\dummy.dll /GRANT ADMINISTRATORS:F
copy E:\dummy.dll C:\Windows\system32\dummy.dll

Windows RE / Recovery Partition prüfen

Recovery Partition erstellen

Die Windows Recovey Partition muss zunächst existieren. Nach Microsoft Partitionierungsschema soll die Recovery Partition am Ende der Partitionstabelle als letzte Partition angelegt sein. Existiert sie nicht wird sie wie folgt angelegt:

BIOS-basierte Systeme

create partition primary size=500
format quick fs=ntfs
label="Recovery tools"
assign letter="R"
set id=27

UEFI-basierte Systeme

create partition primary size=500
format quick fs=ntfs
label="Recovery tools"
assign letter="R"
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001

Recovery Partition vorbereiten

Anschließend muss die Partition temporär mit einem Laufwerksbuchstaben ausgestattet werden:

diskpart list disk
 # Korrekte Boot-Festplatte ermitteln und ihren Index nachfolgend als N einsetzen
sel disk N
list part
# Die Recovery Partition ermitteln und nachfolgend als M einsetzen
sel part M
# Den Laufwerksbuchstaben R: zuweisen
assign letter=R:
exit

Windows RE erstellen und bekannt machen

Nun kann das Windows RE auf die Recovery Partition kopiert werden:

md R:\Recovery\WindowsRE
xcopy /h C:\Windows\System32\Recovery\winre.wim R:\Recovery\WindowsRE\winre.wim

Der Pfad kann auch auf C:\Recovery\winre.wim lauten sofern keine Recovery Partition bei der ursprünglichen Betriebssysteminstallation erstellt wurde. Die Kopie muss mir xcopy /h erfolgen um das Hidden Attribute nicht zu kopieren.

Wenn das winre.wim komplett fehlt muss es aus einem Installations Image extrahiert werden. Dazu benötigt man ein Installationsmedium (konkret die install.wim):

# Temporäres Verzeichnis erstellen (Achtung: Genügend Speicherplatz wird benötigt!)
md C:\temp\win_install
# Editionen anzeigen und Index ermitteln
dism /get-wiminfo /wimfile:"D:\sources\install.wim"
# install.wim mit passendem Editions-spezifischem Index in das temporäre Verzeichnis extrahieren
dism /Mount-Wim /WimFile:"D:\sources\install.wim" /index:2 /MountDir:"C:\temp\win_install" /readonly
# WinRE.wim kopieren
cd C:\temp\win_install\Windows\System32\Recovery
xcopy /h winre.wim R:\Recovery\WindowsRE\winre.wim
# install.wim wieder unmounten
dism /unmount-wim /mountdir:"C:\temp\win_install" /discard

Das nun erstellte Windows RE muss dem Betriebssystem (dem tatsächlichen Windows) bekannt gemacht werden:

reagentc /setreimage /path R:\Recovery\WindowsRE /target C:\Windows

Der Parameter /path beschreibt den Pfad in welchem das winre.wim liegt
Der Parameter /target beschreibt das Windowsverzeichnis des Betriebsssystems dem das Windows RE bekannt gemacht werden soll

Um zu verifizieren ob der Eintrag erfolgreich war kann er wie folgt angezeigt werden:

reagentc /Info /Target C:\Windows

Die Ausgabe sollte in etwa so aussehen:

Windows Recovery Environment (Windows RE) and system reset configuration
Information:

    Windows RE status:         Enabled
    Windows RE location:       \\?\GLOBALROOT\device\harddisk6\partition1\Recovery\WindowsRE
    Boot Configuration Data (BCD) identifier: 8e3fa2e7-f17b-11e6-bab9-ba9032f067f3
    Recovery image location:   \\?\GLOBALROOT\device\harddisk6\partition5\Recovery\WindowsRE
    Recovery image index:      1
    Custom image location:
    Custom image index:        0

Bootloadereintrag prüfen und erstellen

Im Bootloader sollte auch ein Eintrag für das Windows RE vorhanden sein welcher auf die Recovery Partition zeigt. Der Eintrag kann mit dem Befehl bcdedit /enum osloader  geprüft werden. Die Ausgabe sollte in etwa so aussehen:

Windows-Startladeprogramm
-------------------------
Bezeichner {8e3fa2e7-f17b-11e6-bab9-ba9032f067f3}
device ramdisk=[\Device\HarddiskVolume1]\Recovery\WindowsRE\Winre.wim,{8e3fa2e8-f17b-11e6-bab9-ba9032f067f3}
path \windows\system32\winload.exe
description Windows Recovery Environment
locale de-DE
inherit {bootloadersettings}
displaymessage Recovery
displaymessageoverride Recovery
osdevice ramdisk=[\Device\HarddiskVolume1]\Recovery\WindowsRE\Winre.wim,{8e3fa2e8-f17b-11e6-bab9-ba9032f067f3}
systemroot \windows
nx OptIn
bootmenupolicy Standard
winpe Yes

Der Parameter identifier sollte sich gemerkt werden da er gleich noch benötigt wird.

Bootloaderreferenz prüfen und erstellen

Das Betriebssystem selbst muss im Bootloader eine Referenz auf den Bootloadereintrag für das Windows RE haben. Die Referenz GUID kann wie folgt ermittelt werden:

bcdedit /enum {current}

Aus der Ausgabe kann die Referenz GUID ausgelsen werden:

Windows Boot Loader
-------------------
identifier         {current}
device             partition=C:
path               \Windows\system32\winload.exe
description        Windows 7
locale             de-DE
inherit            {bootloadersettings}
recoverysequence   {d1758ad0-da09-11de-87b2-fe21320b6b8c}
recoveryenabled    Yes
osdevice           partition=C:
systemroot         \Windows
resumeobject       {d1758ace-da09-11de-87b2-fe21320b6b8c}
nx                 OptIn

Die unter dem Parameter recoverysequence angegebene GUID muss dem Paraeter identifier des Windows RE wie zuvor ermittelt entsprechen. Tut es das nicht kann die recoverysequence durch die korrekte GUID überschrieben werden:

bcdedit /set {current} recoverysequence {8e3fa2e7-f17b-11e6-bab9-ba9032f067f3}

Windows RE reaktivieren

Wenn alle Einstellungen bereits von vornherein korrekt waren. das Windows RE aber nicht startet so hilft es manchmal das RE einfach neu zu aktivieren:

reagentc /disable /Target C:\Windows\
reagentc /enable /Target C:\Windows\

Links

https://de.wikipedia.org/wiki/Bootmgr
https://msdn.microsoft.com/de-de/library/windows/hardware/dn898490(v=vs.85).aspx
https://msdn.microsoft.com/de-de/library/windows/hardware/dn898493(v=vs.85).aspx
https://support.microsoft.com/de-de/help/300415.
https://msdn.microsoft.com/de-de/library/windows/hardware/dn898510(v=vs.85).aspx
https://support.microsoft.com/de-de/help/929833/use-the-system-file-checker-tool-to-repair-missing-or-corrupted-system

Remote Desktop Services Abmelden/Trennen

In Microsofts Remote Desktop Services (RDS) gibt es zwei Möglichkeiten eine virtuelle Sitzung zu verlassen. Abmelden und Trennen. Doch worin besteht der Unterschied und welches von beiden soll wann verwendet werden?

Abmelden

Die Abmeldung ist zunächst genau die Funktion, welche man bereits von stationären (echten) PCs kennt. Die Sitzung wird beendet, alle offenen Programme werden geschlossen und alle offenen, nicht gespeicherten, Dateien werden ebenso geschlossen. Am stationären PC würde Windows dann auf den Anmeldebildschirm zurückkehren, wo man seinen Benutzernamen und sein Kennwort eingeben kann.

Nach einer Abmeldung werden am entfernten Server keine Ressourcen mehr durch den Benutzer belegt. Bei einer erneuten Anmeldung wird eine frische, neue Sitzung erstellt.

Die Funktion Abmelden ist sinnvoll, wenn man die bestehende Sitzung nicht mehr benötigt. Beispielsweise am Ende eines Arbeitstages. Am nächsten Tag kann dann mit einer frischen, neuen Sitzung gestartet werden.

Achtung: Anmeldescripte des Administrators oder ähnliche Änderungen werden nur bei einer Anmeldung nach einer vorangegangenen Abmeldung ausgeführt. Nicht bei einem Wiederverbinden nach der Funktion Trennen. Bei Problemen empfiehlt es sich deshalb immer die Sitzung sauber ab- und neu anzumelden.

Trennen

Bei der Auswahl von Trennen wird die Sitzung nicht beendet, sondern nur verlassen. Die Sitzung bleibt weiterhin am Server geöffnet, alle gestarteten Programme und offenen Dateien bleiben ebenfalls genauso erhalten wie man die Sitzung verlassen hat. Die Funktion lässt sich am ehesten damit vergleichen, wenn man am stationären PC seinen Bildschirm sperrt oder ausschaltet.

Verbindet man sich später erneut mit dem Server wird die gleiche Sitzung wieder verbunden und man sieht den Bildschirm als hätte man ihn nie verlassen.

Die Funktion Trennen ist insbesondere dann sinnvoll, wenn man beispielsweise in mobilen Arbeitsumgebungen den Raum oder Arbeitsplatz wechseln möchte. Außerdem können langlaufende Auswertungen oder Arbeiten gestartet werden und zu einem späteren Zeitpunkt die Ergebnisse kontrolliert werden.

Administrative Limitierung

Es gibt in Windows Server für den Administrator eine Reihe von Einstellungen die oben genannten Möglichkeiten zentral zu limitieren. Auf diese wird nun hier eingegangen.

MaxConnectionTime

Es besteht die Möglichkeit eine aktive Verbindung (welche vom Benutzer aktiv benutzt wird) auf eine maximale Zeit zu limitieren. Danach wird die Verbindung getrennt. 2 Minuten vor Ablauf der Zeit erfolgt eine Warnung an den Benutzer.  Die Zeitdauer lässt sich in Millisekunden von 0 bis 5 Tagen einstellen.

Soll die Sitzung nicht nur getrennt sondern zwangsabgemeldet werden siehe unter ResetBroken.

Gruppenrichtline (GPO)

Computerkonfiguration\Administrative Vorlagen\Windows-Komponenten\Remotedesktopdienste\Remotedesktopsitzungs-Host\Sitzungszeitlimits\Zeitlimit für aktive Remotedesktopdienste-Sitzungen festlegen

Die Einstellung kann comupter- oder benutzerbasiert gesetzt werden. Die computerbasierte Einstellung hat Vorrang.

Registry

HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Terminal Services
MaxConnectionTime REG_DWORD

MaxIdleTime

Es besteht die Möglichkeit eine aktive, aber im Leerlauf befindliche Verbindung trennen zu lassen. Die Trennung erfolgt, wenn für die angegebene Zeitdauer keine Benutzereingabe erfolgt ist. 2 Minuten vor Ablauf der Zeit erfolgt eine Warnung an den Benutzer. Die Zeitdauer lässt sich in Millisekunden von 0 bis 5 Tagen einstellen.

Soll die Sitzung nicht nur getrennt sondern zwangsabgemeldet werden siehe unter ResetBroken.

Gruppenrichtline (GPO)

Computerkonfiguration\Administrative Vorlagen\Windows-Komponenten\Remotedesktopdienste\Remotedesktopsitzungs-Host\Sitzungszeitlimits\Zeitlimit für aktive, aber im Leerlauf befindliche Remotedesktopdienste-Sitzungen festlegen

Die Einstellung kann comupter- oder benutzerbasiert gesetzt werden. Die computerbasierte Einstellung hat Vorrang.

Registry

HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Terminal Services
MaxIdleTime REG_DWORD

ResetBroken

Soll die Sitzung nach dem Ablauf der in MaxConnectionTime und MaxIdleTime angegebenen Zeitspanne komplett zwangsabgemeldet (zurückgesetzt) und nicht nur einfach getrennt werden, so kann dieser Wert gesetzt werden.

Achtung: Es handelt sich hierbei nicht um eine saubere Abmeldung sondern tatsächlich um ein Zurücksetzen.

Gruppenrichtline (GPO)

Computerkonfiguration\Administrative Vorlagen\Windows-Komponenten\Remotedesktopdienste\Remotedesktopsitzungs-Host\Sitzungszeitlimits\Sitzung beenden, wenn Zeitlimit erreicht wird

Die Einstellung kann comupter- oder benutzerbasiert gesetzt werden. Die computerbasierte Einstellung hat Vorrang.

Registry

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
fResetBroken REG_DWORD

MaxDisconnectionTime

Für getrennte Sitzungen kann eine maximale Zeitdauer definiert werden, wie lange die Verbindung aufrecht erhalten werden soll. Innerhalb dieser Zeit kann der Benutzer sich erneut mit der Sitzung verbinden und die Sitzung belegt Ressourcen auf dem Server. Nach Ablauf der eingestellten Zeitdauer wird die Sitzung zurückgesetzt. Standardmäßig werden getrennte Sitzungen unbegrenzt aufrecht erhalten. Die Zeitdauer lässt sich in Millisekunden von 0 bis 5 Tagen einstellen.

Achtung: Es handelt sich hierbei nicht um eine saubere Abmeldung sondern tatsächlich um ein Zurücksetzen.

Gruppenrichtline (GPO)

Computerkonfiguration\Administrative Vorlagen\Windows-Komponenten\Remotedesktopdienste\Remotedesktopsitzungs-Host\Sitzungszeitlimits\Zeitlimit für getrennte Sitzungen festlegen

Die Einstellung kann comupter- oder benutzerbasiert gesetzt werden. Die computerbasierte Einstellung hat Vorrang.

Registry

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
MaxDisconnectionTime REG_DWORD

Links

https://getadmx.com/?Category=Windows_10_2016&Policy=Microsoft.Policies.TerminalServer::TS_SESSIONS_Disconnected_Timeout_2&Language=de-de

https://support.microsoft.com/de-de/help/186566/connection-configuration-in-terminal-server

https://www.windowspro.de/benjamin-buerk/einstellungen-fuer-remotedesktop-ueber-lokale-richtlinien-registry-konfigurieren

Let’s encrypt mit Microsoft Exchange / IIS.

Diese Anleitung basiert auf Microsoft Exchange 2013 auf Windows Server 2012 R2 mit IIS.

Let’s Encrypt lässt sich zwar mittels ACMESharp für Powershell adapatieren, allerdings stellt dies nur das ACME Protokoll an sich dar. Die Aktualisierung der Zertifikate sowie die Aktivierung in Exchange und IIS muss zu Fuß erfolgen.

Hier wird ein Script dargestellt, welches alles automatisiert erledigt. Das gesamte Paket steht auch zum Download zur Verfügung.

# Needed PowerShell modules
Import-Module WebAdministration
Import-Module ACMESharp
Import-Module ACMESharp\ACMESharp-IIS
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn