Srdelayed.exe
Les applications qui effectuent des opérations de restauration d’état système au début du démarrage du système d’exploitation peuvent ne pas pouvoir utiliser les fonctions de gestion de fichiers pour déplacer, supprimer ou définir le nom court de certains fichiers système. Srdelayed.exe est un fichier exécutable, fourni avec la fonctionnalité De sauvegarde Windows Server (WSB) dans Windows Server 2008, qui peut permettre aux applications de récupération d’état système de déplacer, supprimer et définir le nom court des fichiers système.
L’outil Srdelayed est destiné aux applications de récupération d’état système ; il ne remplace pas les fonctions de gestion de fichiers. Cet outil ne doit être utilisé que lorsque l’application ne peut pas déplacer, supprimer ou définir le nom court d’un fichier système à l’aide du MoveFileEx, DeleteFileet fonctions SetFileShortName. Pendant une restauration et un redémarrage de l’état du système, Srdelayed.exe est utilisé par la restauration du système et l’outil en ligne de commande wbadmin.exe pour déplacer, supprimer et définir le nom court sur certains fichiers système. Srdelayed peut donc être utile pour les développeurs qui nécessitent la possibilité de restaurer ces fichiers système dans leurs propres applications de récupération d’état système.
Srdelayed peut effectuer les opérations suivantes :
- Opération de déplacement de fichier similaire à la fonction MoveFileEx avec l’indicateur de MOVEFILE_DELAY_UNTIL_REBOOT
- Opération de suppression de fichier similaire à la fonction DeleteFile
- Opération de nom court définie similaire à la fonction SetFileShortName
Pour utiliser Srdelayed, votre application nécessite le chemin d’accès complet à l’emplacement du fichier Srdelayed.exe et le chemin d’accès complet à un fichier texte Unicode que vous avez créé pour contenir les informations dont l’outil a besoin pour effectuer toutes les opérations de gestion de fichiers demandées. Votre application est chargée de s’assurer que ce fichier texte ne contient pas de requêtes redondantes pour une opération et qu’elle gère tout ordre requis des opérations de gestion de fichiers. Par exemple, étant donné qu’un dossier doit être vide pour être supprimé, votre application doit s’assurer que le fichier texte spécifie la suppression de tous les fichiers à l’intérieur du dossier avant de demander la suppression du dossier.
Si l’entrée SetupExecute n’existe pas déjà dans le Registre, votre application doit créer une entrée de type REG_MULTI_SZ nommée SetupExecute sous la clé de Registre suivante : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager.
Votre application doit utiliser le format suivant pour définir la valeur de SetupExecute sur le chemin d’accès complet au fichier Srdelayed.exe et au chemin d’accès complet à l’emplacement du fichier texte. Préfixe "\\ ?? \" vers le chemin du fichier texte, comme suit :
chemin d’accès complet à Srdelayed.exe \\ ?? \chemin d’accès complet au fichier texte
Par exemple, la valeur suivante pour SetupExecute indique que le Srdelayed.exe se trouve dans le dossier System32 et que le fichier texte est nommé DelayedOperations :
C:\Windows\System32\srdelayed.exe \\ ?? \C :\temp\DelayedOperations
Les espaces dans le chemin d’accès et le nom doivent être encodés hexadécimaux. Par exemple, pour Program Files, encodez le chemin en tant que « \\ ? ? » \C :Program%20Files\a.dll".
Lorsque le registre ou le système est restauré lors du redémarrage, votre application doit s’assurer que SetupExecute est écrit dans la ruche de Registre appropriée. La récupération du Registre est effectuée avant l’exécution de Srdelayed.exe. L’application doit écrire SetupExecute dans la version récupérée du Registre, car il s’agit de la version lue.
Format du fichier d’entrée Srdelayed
Toutes les informations dont Srdelayed a besoin pour effectuer des opérations de gestion de fichiers sont spécifiées sous forme de chaîne de caractères Unicode dans un fichier texte Unicode. La chaîne de caractères Unicode est partitionnée en enregistrements qui sont eux-mêmes partitionnés en quatre champs. Chaque enregistrement spécifie un fichier de déplacement unique, supprime un fichier ou définit une opération de nom court. Les quatre champs de chaque enregistrement contiennent les paramètres de l’opération. Srdelayed.exe effectue chaque opération dans l’ordre dans lequel leurs enregistrements se produisent dans la chaîne. Votre application doit rechercher les enregistrements dupliqués dans ce fichier et supprimer les doublons.
La chaîne suivante illustre le format d’un fichier demandant deux opérations et composé de deux enregistrements. Chaque champ de paramètre se termine par un seul caractère L'\0. Un enregistrement se compose de quatre champs consécutifs. Un caractère L'\0 supplémentaire est ajouté à la fin de tous les enregistrements.
<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------------------------|
La signification des premiers, deuxième, troisième et quatrième champs de paramètre varie selon que l’enregistrement décrit une opération de déplacement, de suppression ou de définition de nom court.
Format d’un enregistrement de fichier de déplacement
Le champ 1 identifie cela comme une demande de déplacement d’un fichier. La valeur de ce champ est toujours L« MoveFile » et respecte la casse.
Le champ 2 spécifie l’emplacement source du fichier. L’opération de déplacement srdelayed de fichier ne prend pas en charge le déplacement d’un dossier. Un fichier doit être spécifié dans ce champ. La valeur de ce champ est le chemin d’accès complet du fichier ajouté à « \\ ?? » \ » sauf si le chemin d’accès inclut un identificateur global unique (GUID), qui utilise « \\ ?\ » comme préfixe. Supprimez « \\ ?\\ » avant d’ajouter à « \\ ?? » \".
Le champ 3 spécifie la destination du fichier. L’opération de déplacement de fichier fonctionne uniquement dans un volume. La source et la destination doivent se trouver sur le même volume. La valeur de ce champ est le chemin d’accès complet du fichier ajouté à « \\ ?? » \ » sauf si le chemin d’accès inclut un identificateur global unique (GUID), qui utilise « \\ ?\ » comme préfixe. Supprimez « \\ ?\\ » avant d’ajouter à « \\ ?? » \".
Le champ 4 reçoit les informations d’état de Srdelayed. La valeur de ce champ doit être définie sur L « NotExecuted » pour un nouvel enregistrement.
L’exemple suivant référence le fichier par chemin d’accès du lecteur. Si le chemin et le nom de la source sont C:\Stage\a.dll, cet enregistrement demande à Srdelayed de le déplacer vers C:\temp\a.dll.
MoveFile \\ ?? \C:\Stage\a.dll \\ ?? \C:\temp\a.dll NotExecuted
L’exemple suivant référence le fichier par chemin d’accès GUID du volume. Si le chemin et le nom de la source sont \\ ?\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\Stage\a.dll, cet enregistrement demande à Srdelayed de le déplacer vers \\ ?\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 d’un enregistrement de fichier de suppression
Le champ 1 identifie cela comme une demande de suppression d’un fichier. La valeur de ce champ est toujours L « DeleteFile » et respecte la casse.
Le champ 2 n’est pas utilisé. La valeur de ce champ doit être définie sur L « Non utilisé ».
Le champ 3 spécifie le fichier à supprimer. Un dossier doit être vide pour être supprimé. Utilisez les opérations de suppression de fichiers pour supprimer tous les fichiers du dossier avant de supprimer le dossier. La valeur de ce champ est le chemin d’accès complet du fichier ajouté à « \\ ?? » \ » sauf si le chemin d’accès inclut un identificateur global unique (GUID), qui utilise « \\ ?\ » comme préfixe. Supprimez « \\ ?\\ » avant d’ajouter à « \\ ?? » \".
Le champ 4 reçoit les informations d’état de Srdelayed. La valeur de ce champ doit être définie sur L « NotExecuted » pour un nouvel enregistrement.
L’exemple suivant référence le fichier par chemin d’accès du lecteur. Si le chemin d’accès et le nom sont C:\temp\b.dll, cet enregistrement demande à Srdelayed de supprimer le fichier.
DeleteFile inutilisé \\ ?? \C:\temp\b.dll NotExecuted
L’exemple suivant référence le fichier par GUID de volume. Si le chemin et le nom sont \\ ?\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\temp\b.dll, cet enregistrement demande à Srdelayed de supprimer le fichier.
DeleteFile inutilisé \\ ??\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\temp\b.dll\ NotExecuted
Format pour définir l’enregistrement Short-Name
Le champ 1 identifie cela comme une demande pour définir le nom court d’un fichier. La valeur de ce champ est toujours L « SetFileShortName » et respecte la casse.
Le champ 2 spécifie le nom court.
Le champ 3 spécifie le chemin d’accès et le nom long pour recevoir le nom court. La valeur de ce champ est le chemin d’accès et le nom long du fichier ajouté à « \\ ?? » \ » sauf si le chemin d’accès inclut un identificateur global unique (GUID), qui utilise « \\ ?\ » comme préfixe. Supprimez « \\ ?\\ » avant d’ajouter à « \\ ?? » \".
Le champ 4 reçoit les informations d’état de Srdelayed. La valeur de ce champ doit être définie sur L « NotExecuted » pour un nouvel enregistrement.
L’exemple suivant référence le fichier par chemin d’accès du lecteur. Si le chemin d’accès et le nom du fichier sont C:\temp\ShortFileName.dll, this record requests that the file receive a short name, ShortN~1.dll.
SetFileShortName ShortN~1.dll \\ ?? \C:\temp\ShortFileName.dll NotExecuted
L’exemple suivant référence le fichier par GUID de volume. Si le chemin et le nom du fichier sont \\ ?\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
État des opérations srdelayed
Srdelayed écrit la chaîne L"SC=xxxxxxx" dans le quatrième champ de chaque enregistrement du fichier texte, où xxxxxxx est un hexadécimal qui indique l’état de l’opération demandée. La valeur zéro indique que l’opération a réussi.
Srdelayed crée une clé de Registre nommée SystemRestore sous HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion pour consigner le résultat de l’opération de restauration entière. Si Srdelayed effectue toutes les opérations demandées avec succès, le nom RestoreStatusResult est écrit sous cette clé avec une valeur nulle. Si Srdelayed n’est pas en mesure d’effectuer l’une des opérations demandées, les noms RestoreStatusResult et RestoreStatusDetails sont écrits sous cette clé avec des valeurs non nulles. Le nom RestoreStatusDetails est écrit sous cette clé uniquement si Srdelayed ne peut pas effectuer d’opérations demandées. Si une opération pour définir le nom court d’un fichier échoue, Srdelayed passe à l’opération suivante. Srdelayed considère que les opérations de déplacement et de suppression de fichier sont critiques et ne continue pas si une opération de déplacement ou de suppression échoue.