Freigeben über


Srdelayed.exe

Anwendungen, die systemzustandswiederherstellungsvorgänge früh beim Start des Betriebssystems ausführen, können möglicherweise die Dateiverwaltungsfunktionen nicht verwenden, um bestimmte Systemdateien zu verschieben, zu löschen oder festzulegen. Srdelayed.exe ist eine ausführbare Datei, die mit der Windows Server-Sicherung (WSB)-Funktion in Windows Server 2008 bereitgestellt wird, mit der Systemzustandswiederherstellungsanwendungen verschoben, gelöscht und den Kurznamen von Systemdateien festgelegt werden können.

Das Srdelayed-Tool ist für Systemzustandswiederherstellungsanwendungen vorgesehen; sie ersetzt nicht die Dateiverwaltungsfunktionen. Dieses Tool sollte nur verwendet werden, wenn die Anwendung den Kurznamen einer Systemdatei nicht mithilfe der MoveFileEx-, DeleteFile-und SetFileShortName--Funktionen verschieben, löschen oder festlegen kann. Während einer Systemzustandswiederherstellung und -neustart wird Srdelayed.exe von Systemwiederherstellung und dem Befehlszeilentool wbadmin.exe verwendet, um den Kurznamen für bestimmte Systemdateien zu verschieben, zu löschen und festzulegen. Srdelayed kann daher für Entwickler nützlich sein, die die Möglichkeit benötigen, diese Systemdateien in ihren eigenen Systemzustandswiederherstellungsanwendungen wiederherzustellen.

Srdelayed kann die folgenden Vorgänge ausführen:

  • Ein Verschiebungsdateivorgang ähnlich der MoveFileEx--Funktion mit der MOVEFILE_DELAY_UNTIL_REBOOT-Kennzeichnung
  • Ein Löschdateivorgang ähnlich der funktion DeleteFile
  • Ein Set-Kurznamen-Vorgang ähnlich der SetFileShortName--Funktion

Um Srdelayed zu verwenden, benötigt Ihre Anwendung den vollständigen Pfad zum Speicherort der Srdelayed.exe Datei und den vollständigen Pfad zu einer Unicode-Textdatei, die Sie erstellt haben, um die Informationen zu enthalten, die das Tool benötigt, um alle angeforderten Dateiverwaltungsvorgänge auszuführen. Ihre Anwendung ist dafür verantwortlich, sicherzustellen, dass diese Textdatei keine redundanten Anforderungen für einen Vorgang enthält und dass sie alle erforderlichen Anordnungen der Dateiverwaltungsvorgänge verarbeitet. Da beispielsweise ein Ordner leer sein muss, um gelöscht zu werden, muss Ihre Anwendung sicherstellen, dass die Textdatei das Entfernen aller Dateien innerhalb des Ordners angibt, bevor der Ordner gelöscht wird.

Wenn der eintrag SetupExecute in der Registrierung noch nicht vorhanden ist, muss Ihre Anwendung einen REG_MULTI_SZ Typeintrag namens SetupExecute unter dem folgenden Registrierungsschlüssel erstellen: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager.

Ihre Anwendung sollte das folgende Format verwenden, um den Wert von SetupExecute auf den vollständigen Pfad zum Speicherort der Srdelayed.exe Datei und den vollständigen Pfad zum Speicherort der Textdatei festzulegen. Präfix "\\?? \" zum Pfad der Textdatei, wie folgt:

vollständiger Pfad zu Srdelayed.exe \\?? \Vollständiger Pfad zur Textdatei

Beispielsweise gibt der folgende Wert für SetupExecute an, dass sich die Srdelayed.exe im Ordner "System32" befindet und die Textdatei "DelayedOperations" heißt:

C:\Windows\System32\srdelayed.exe \\?? \C:\temp\DelayedOperations

Leerzeichen im Pfad und Name sollten hexadezimal codiert sein. Codieren Sie z. B. für Programmdateienden Pfad als "\\?? \C:Program%20Files\a.dll".

Wenn die Registrierung oder das System beim Neustart wiederhergestellt wird, muss Ihre Anwendung sicherstellen, dass SetupExecute in die richtige Registrierungsstruktur geschrieben wird. Die Wiederherstellung der Registrierung wird ausgeführt, bevor Srdelayed.exe ausgeführt wird. Die Anwendung muss SetupExecute- in die wiederhergestellte Version der Registrierung schreiben, da dies die gelesene Version ist.

Format für die Srdelayed-Eingabedatei

Alle Informationen, die Srdelayed zum Ausführen von Dateiverwaltungsvorgängen benötigt, werden als Zeichenfolge von Unicode-Zeichen in einer Unicode-Textdatei angegeben. Die Zeichenfolge von Unicode-Zeichen wird in Datensätze unterteilt, die jeweils in vier Felder partitioniert sind. Jeder Datensatz gibt eine einzelne Verschiebungsdatei an, löscht eine Datei oder legt einen Kurznamenvorgang fest. Die vier Felder jedes Datensatzes enthalten die Parameter für den Vorgang. Srdelayed.exe führt jeden Vorgang in der Reihenfolge aus, in der die Datensätze in der Zeichenfolge auftreten. Ihre Anwendung sollte nach doppelten Datensätzen in dieser Datei suchen und die Duplikate entfernen.

Die folgende Zeichenfolge veranschaulicht das Format für eine Datei, die zwei Vorgänge anfordert und aus zwei Datensätzen besteht. Jedes Parameterfeld endet mit einem einzelnen L'\0'-Zeichen. Ein Datensatz besteht aus vier aufeinander folgenden Feldern. Am Ende aller Datensätze wird ein zusätzliches einzelnes L'\0-Zeichen angefügt.

<ParamA1>L'\0'<ParamA2>L'\0'<ParamA3>L'\0'<ParamA4>L'\0'<ParamB1>L'\0'<ParamB2>L'\0'<ParamB3>L'\0'<ParamB4>L'\0'L'\0'
|-----------------------RecordA------------------------|------------------------RecordB------------------------|

Die Bedeutung der Felder für den ersten, zweiten, dritten und vierten Parameter hängt davon ab, ob der Datensatz einen Vorgang zum Verschieben, Löschen oder Festlegen eines Kurznamens beschreibt.

Format für einen Move File Record

Feld 1 identifiziert dies als Anforderung zum Verschieben einer Datei. Der Wert in diesem Feld ist immer "L"MoveFile" und beachtet die Groß-/Kleinschreibung.

Feld 2 gibt den Quellspeicherort der Datei an. Der Dateivorgang "Srdelayed move" unterstützt das Verschieben eines Ordners nicht. In diesem Feld muss eine Datei angegeben werden. Der Wert für dieses Feld ist der vollständige Pfad der Datei, die an "\\?? \" es sei denn, der Pfad enthält eine GUID (Globally Unique Identifier), die "\\?\" als Präfix verwendet. Entfernen Sie "\\?\" vor dem Anfügen an "\\?? \".

Feld 3 gibt das Ziel der Datei an. Der Vorgang "Datei verschieben" funktioniert nur innerhalb eines Volumes. Die Quelle und das Ziel müssen sich auf demselben Volume befinden. Der Wert für dieses Feld ist der vollständige Pfad der Datei, die an "\\?? \" es sei denn, der Pfad enthält eine GUID (Globally Unique Identifier), die "\\?\" als Präfix verwendet. Entfernen Sie "\\?\" vor dem Anfügen an "\\?? \".

Feld 4 empfängt Statusinformationen von Srdelayed. Der Wert in diesem Feld sollte für einen neuen Datensatz auf "L"NotExecuted" festgelegt werden.

Im folgenden Beispiel wird auf die Datei anhand des Laufwerkpfads verwiesen. Wenn der Pfad und der Name der Quelle C:\Stage\a.dllist, fordert dieser Datensatz an, dass Srdelayed sie in C:\temp\a.dllverschoben.

MoveFile \\?? \C:\Stage\a.dll \\?? \C:\temp\a.dll NotExecuted

Im folgenden Beispiel wird auf die Datei anhand des Volume-GUID-Pfads verwiesen. Wenn der Pfad und der Name der Quelle \\?\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\Stage\a.dllfordert dieser Datensatz an, dass srdelayed sie nach \\verschieben?\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\temp\a.dll

MoveFile \\??\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\Stage\a.dll \\??\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\temp\a.dll NotExecuted

Format für einen Löschdateidatensatz

Feld 1 identifiziert dies als Anforderung zum Löschen einer Datei. Der Wert in diesem Feld ist immer "DeleteFile" und beachtet die Groß-/Kleinschreibung.

Feld 2 ist nicht verwendet. Der Wert in diesem Feld sollte auf "L"Nicht verwendet" festgelegt werden.

Feld 3 gibt die zu entfernende Datei an. Ein Ordner muss leer sein, um entfernt zu werden. Verwenden Sie Löschvorgänge, um alle Dateien im Ordner zu entfernen, bevor Sie den Ordner entfernen. Der Wert für dieses Feld ist der vollständige Pfad der Datei, die an "\\?? \" es sei denn, der Pfad enthält eine GUID (Globally Unique Identifier), die "\\?\" als Präfix verwendet. Entfernen Sie "\\?\" vor dem Anfügen an "\\?? \".

Feld 4 empfängt Statusinformationen von Srdelayed. Der Wert in diesem Feld sollte für einen neuen Datensatz auf "L"NotExecuted" festgelegt werden.

Im folgenden Beispiel wird auf die Datei anhand des Laufwerkpfads verwiesen. Wenn der Pfad und Name C:\temp\b.dllist, fordert dieser Datensatz an, dass Srdelayed die Datei gelöscht hat.

DeleteFile Nicht verwendet \\?? \C:\temp\b.dll NotExecuted

Im folgenden Beispiel wird auf die Datei anhand der Volume-GUID verwiesen. Wenn der Pfad und Name \\?\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\temp\b.dllfordert dieser Datensatz an, dass srdelayed die Datei entfernt.

DeleteFile Nicht verwendet \\??\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\temp\b.dll\ NotExecuted

Format für set Short-Name Record

Feld 1 identifiziert dies als Anforderung zum Festlegen des Kurznamens einer Datei. Der Wert in diesem Feld ist immer "L"SetFileShortName" und beachtet die Groß-/Kleinschreibung.

Feld 2 gibt den Kurznamen an.

Feld 3 gibt den Pfad und den langen Namen an, um den Kurznamen zu erhalten. Der Wert für dieses Feld ist der Pfad und der lange Name der Datei, die an "\\?? \" es sei denn, der Pfad enthält eine GUID (Globally Unique Identifier), die "\\?\" als Präfix verwendet. Entfernen Sie "\\?\" vor dem Anfügen an "\\?? \".

Feld 4 empfängt Statusinformationen von Srdelayed. Der Wert in diesem Feld sollte für einen neuen Datensatz auf "L"NotExecuted" festgelegt werden.

Im folgenden Beispiel wird auf die Datei anhand des Laufwerkpfads verwiesen. Wenn der Pfad und der Name der Datei C:\temp\ShortFileName.dll, this record requests that the file receive a short name, ShortN~1.dllist.

SetFileShortName ShortN~1.dll \\?? \C:\temp\ShortFileName.dll NotExecuted

Im folgenden Beispiel wird auf die Datei anhand der Volume-GUID verwiesen. Wenn der Pfad und der Name der Datei \\?\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\temp\ShortFileName.dll\, this record requests that the file receive a short name, ShortN~1.dll.

SetFileShortName ShortN~1.dll \\??\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\temp\ShortFileName.dll\ NotExecuted

Srdelayed Operations Status

Srdelayed schreibt die Zeichenfolge L"SC=xxxxxxx" in das vierte Feld jedes Datensatzes der Textdatei, wobei xxxxxxx eine Hexadezimalzahl ist, die den Status des angeforderten Vorgangs angibt. Ein Wert von Null gibt an, dass der Vorgang erfolgreich war.

Srdelayed erstellt einen Registrierungsschlüssel namens SystemRestore unter HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion, um das Ergebnis des gesamten Wiederherstellungsvorgangs zu protokollieren. Wenn Srdelayed alle angeforderten Vorgänge erfolgreich ausführt, wird der Name RestoreStatusResult unter diesem Schlüssel mit einem Nullwert geschrieben. Wenn Srdelayed keine der angeforderten Vorgänge ausführen kann, werden die Namen "RestoreStatusResult" und "RestoreStatusDetails" unter diesem Schlüssel mit nichtzero-Werten geschrieben. Der Name RestoreStatusDetails wird nur unter diesem Schlüssel geschrieben, wenn Srdelayed keine angeforderten Vorgänge ausführen kann. Wenn ein Vorgang zum Festlegen des Kurznamens einer Datei nicht erfolgreich ist, fährt Srdelayed mit dem nächsten Vorgang fort. Srdelayed betrachtet die Verschiebungs- und Löschdateivorgänge als kritisch und wird nicht fortgesetzt, wenn ein Verschiebungs- oder Löschvorgang nicht erfolgreich ist.