Go to English page

ViaThinkSoft CodeLib

Dieser Artikel befindet sich in der Kategorie:
CodeLibProblemlösungen

Seit Freitag, dem 7 April 2018 scheint ein Update für Microsoft Security Essentials für Windows 7 (KB2310138) im Umlauf zu sein, das Benutzerkonten beschädigt. Sehr häufig sind die Dienst-Konten von SQL-Server-Installationen betroffen, sodass der Datenbankserver sich nicht mehr starten lässt.

Fehlerbeschreibung

(1) Wenn normale Benutzerprofile betroffen sind: Nach der Anmeldung erscheint ein leerer Desktop. Die benutzerspezifischen Einstellungen, Farben, Dateien usw. sind nicht mehr vorhanden. Das Benutzerprofil befindet sich in der "Werkseinstellung".

In manchen Fällen kann es sein, dass die Benutzeranmeldung überhaupt nicht möglich ist. In diesem Falle erhalten Sie die Fehlermeldung
Die Anmeldung des Dienstes 'Benutzerprofildienst' ist fehlgeschlagen. Das Benutzerprofil kann nicht geladen werden.

(2) Wenn das Dienstkonto eines SQL-Servers betroffen ist: Der SQL-Serverdienst lässt sich nicht starten. Es erscheint die Meldung:
Der Dienst "SQL-Server (<Instanzname>)" wurde mit folgendem dienstspezifischem Fehler beendet: %%-2146885628.
Eine Reparatur der SQL-Serverinstanz über das SQL Server Setup löst das Problem nicht.

(3) Ein Blick in die Ereignisanzeige von Windows zeigt folgende zugrundeliegende Fehler:
Fehler beim Initialisieren des Fallback-Zertifikats. Fehlercode: 1. Status: 20. Fehlernummer 0.
sowie
Der Aufruf "LoadUserProfile" ist aufgrund folgenden Fehlers fehlgeschlagen: Zugriff verweigert.
und
Die Anmeldung des Dienstes 'Benutzerprofildienst' ist fehlgeschlagen. Das Benutzerprofil kann nicht geladen werden. mit Benutzerangabe MSSQL$<Instanzname>

Beim ersten Auftreten des Fehlers erscheint folgender Eintrag in der Ereignisanzeige:
Das lokal gespeicherte Profil kann nicht geladen werden. Mögliche Fehlerursachen sind nicht ausreichende Sicherheitsrechte oder ein beschädigtes lokales Profil.
Details - Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.


Erklärung

Durch das Update wird nach dem Booten des Computers auf die Registry des Benutzers (ntuser.dat) zugegriffen, noch bevor dieser sich angemeldet hat. (Möglicherweise, um irgendwelche Prüfungen vorzunehmen).

Meldet sich ein Konto an, während die Registry noch geöffnet ist, kommt es zu einer Zugriffsverletzung. Dienstkonten (z.B. die Dienstkonten von SQL-Server, die den Namen MSSQL$<Instanzname> tragen) sind besonders häufig betroffen, da hier die automatische Anmeldung unmittelbar nach dem Hochfahren des Computers durchgeführt wird. Es können jedoch auch normale Benutzerkonten betroffen sein, wenn die Anmeldung schnell oder automatisch erfolgt.

Kommt es zu einer Zugriffsverletzung während der Anmeldung, wird das Profil durch ein temporäres Profil ersetzt. Diese Ersetzung wird jedoch nicht mehr rückgänig gemacht, weswegen der Benutzer keinen Zugriff mehr auf seine Einstellungen und Dateien hat. Ist ein Dienstkonto von SQL-Server betroffen, lässt der Datenbankserver sich nicht mehr starten, da er von den Daten des Dienstkontos abhängig ist.

Die Lösung ist, das temporäre Profil zu entfernen, und das ursprüngliche Profil wieder zu aktivieren. Dieser Schritt wird in der Registry durchgeführt.

Lösung

1. Wenn Sie nicht angemeldet werden können, versuchen Sie, sich mit einem anderen Profil anzumelden. Falls keines vorhanden ist, starten Sie den Computer bitte im abgesicherten Modus (F8 während des Hochfahrens drücken).

2. Starten Sie regedit über die Tastenkombination Win+R.

3. Betreten Sie den Schlüssel HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList und schauen Sie sich die Unterschlüssel an. Jeder Unterschlüssel stellt ein Benutzerprofil dar.

Das beschädigte Profil müsste die Endung ".bak" haben. Der gleichnamige Schlüssel ohne ".bak" ist das neue, temporäre Profil (unerwünscht).

Beispiel:
- Beim Schlüssel S-1-5-80-900269141-4055153352-84965781-2601490689-1616146167.bak handelt es sich um das echte, ursprüngliche Konto des SQL-Dienstbenutzers. Dies ist zu erkennen am Attribut ProfileImagePath, der C:\Users\MSSQL$<Instanzname> lautet. Dies ist das Profil, das wir eigentlich haben möchten.
- Der Schlüssel S-1-5-80-900269141-4055153352-84965781-2601490689-1616146167 ist das temporäre Profil. Hier ist das Attribut ProfileImagePath auf C:\Users\TEMP festgelegt. Dieses Verzeichnis existiert nicht; daher meldet SQL-Server "Zugriff verweigert".

4. In meinem Beispiel löschen Sie den Schlüssel S-1-5-80-.....-1616146167. Anschließend benennen Sie S-1-5-80-.....-1616146167.bak in S-1-5-80-.....-1616146167 um.

5. Nun sollte die Anmeldung wieder funktionieren, bzw. der SQL-Server sollte nun wieder normal über den SQL-Server-Konfigurationsmanager gestartet werden können.
Daniel Marschall
ViaThinkSoft Mitbegründer