PendingFileRenameOperations

Hin und wieder meckert eine Software, dass sie einen Neustart benötigt; ein Beispiel hierfür könnte Veeam sein, wo ich bereits über einen Ansatz zum „Umgehen“ des Problemes berichtet habe.

Dort hieß es stumpf: „Key HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations umbenennen, dann geht es“

Doch – was macht der Key? Und ist das immer so klug?

In diesem Registry-Key steht, wie der Name vermutet, welche Dateien noch umbenannt werden müssen. Dies erfolgt immer beim Hochfahren des Computers – daher der erforderliche Neustart.

In der Regel werden dort Dateien eingetragen, die bei Update noch in Verwendung waren und deswegen nicht während der Laufzeit des Betriebssystems ausgetauscht werden konnten; zum Beispiel Treiber.

Ebenfalls steht in diesem Key, welche Dateien beim nächsten Hochfahren des Computers gelöscht werden sollen, weil sie es ebenso bei einem Update nicht getan werden konnten; auch hier wieder typische Begründung: sie waren in Verwendung.

Pro „Aktion“ sind zwei Zeilen in Verwendung: die erste, für welche Datei das gilt, die zweite, zu was sie umbenannt werden soll. Wenn die zweite Zeile leer ist soll die Datei stattdessen gelöscht werden.

Schauen wir uns den Inhalt mal an; hier ist er zum Beispiel folgender, wobei die Zeilen mit „(leer)“ tatsächlich keinen Inhalt enthalten:

\??\C:\Windows\system32\spool\PRTPROCS\x64\1_HP1100PP.dll
(leer)
\??\C:\Program Files (x86)\Mozilla Firefox\tobedeleted\[...]
(leer)

Neustart des Computers würde darin resultieren, dass diese Dateien gelöscht werden.

Nehmen wir folgenden hypothetischen Fall:

\??\C:\Windows\system32\explorer.exe
(leer)
\??\C:\Windows\system32\explorer.malware.exe
\??\C:\Windows\system32\explorer.exe

Beim nächsten Hochfahren wird die explorer.exe erst gelöscht, dann durch die explorer.malware.exe ersetzt (genauer: die explorer.malware.exe wird zur explorer.exe umbenannt).

Was hilft uns dieses Wissen? Abgesehen davon, dass wir nun etwas Schabernack treiben können, hilft es uns, einen ausstehenden Neustart für einige Programme zu verhindern. Fordert zum Beispiel ein CU für einen Exchange Server beim Start direkt einen Neustart und wir sehen, dass da zum Beispiel nichts systemrelevantes in diesem Key steht, können wir den entsprechenden PendingFileRenameOperations einfach zu PendingFileRenameOperations.bak umbenennen, das CU installieren, und am Ende den Inhalt des neu erstellten PendingFileRenameOperations und den von PendingFileRenameOperations.bak zusammenmischen. Es wurde nur ein Neustart statt zwei benötigt – und die Downtime reduziert.