Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aplikacje, które wykonują operacje przywracania stanu systemu na wczesnym etapie uruchamiania systemu operacyjnego, mogą nie być w stanie używać funkcji zarządzania plikami do przenoszenia, usuwania lub ustawiania krótkiej nazwy niektórych plików systemowych. Srdelayed.exe to plik wykonywalny dostarczany z funkcją Kopia zapasowa systemu Windows Server (WSB) w systemie Windows Server 2008, który umożliwia aplikacjom odzyskiwania stanu systemu przenoszenie, usuwanie i ustawianie krótkiej nazwy plików systemowych.
Narzędzie Srdelayed jest przeznaczone dla aplikacji odzyskiwania stanu systemu; nie zastępuje ona funkcji zarządzania plikami. To narzędzie powinno być używane tylko wtedy, gdy aplikacja nie może przenieść, usunąć lub ustawić krótką nazwę pliku systemowego przy użyciu funkcji MoveFileEx, DeleteFilei SetFileShortName. Podczas przywracania i ponownego uruchamiania stanu systemu Srdelayed.exe jest używany przez przywracanie systemu i narzędzie wiersza polecenia wbadmin.exe do przenoszenia, usuwania i ustawiania krótkiej nazwy w niektórych plikach systemowych. W związku z tym aplikacja Srdelayed może być przydatna dla deweloperów, którzy wymagają możliwości przywrócenia tych plików systemowych we własnych aplikacjach odzyskiwania stanu systemu.
Program Srdelayed może wykonywać następujące operacje:
- Operacja przenoszenia pliku podobna do funkcji MoveFileEx z flagą MOVEFILE_DELAY_UNTIL_REBOOT
- Operacja usuwania pliku podobna do funkcjiDeleteFile
- Ustawiona operacja krótkiej nazwy podobna do funkcji SetFileShortName
Aby użyć pliku Srdelayed, aplikacja wymaga pełnej ścieżki do lokalizacji pliku Srdelayed.exe i pełnej ścieżki do pliku tekstowego Unicode, który został utworzony, aby zawierał informacje, które narzędzie musi wykonać wszystkie żądane operacje zarządzania plikami. Aplikacja jest odpowiedzialna za zapewnienie, że ten plik tekstowy nie zawiera nadmiarowych żądań operacji i że obsługuje wszelkie wymagane kolejności operacji zarządzania plikami. Na przykład ponieważ folder musi być pusty do usunięcia, aplikacja musi upewnić się, że plik tekstowy określa usunięcie wszystkich plików wewnątrz folderu przed zażądaniem usunięcia folderu.
Jeśli wpis SetupExecute nie istnieje jeszcze w rejestrze, aplikacja musi utworzyć wpis typu REG_MULTI_SZ o nazwie SetupExecute w następującym kluczu rejestru: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager.
Aplikacja powinna użyć następującego formatu, aby ustawić wartość SetupExecute na pełną ścieżkę do lokalizacji pliku Srdelayed.exe i pełną ścieżkę do lokalizacji pliku tekstowego. Prefiks "\\?? \" do ścieżki pliku tekstowego w następujący sposób:
pełną ścieżkę do Srdelayed.exe \\?? \pełna ścieżka do pliku tekstowego
Na przykład następująca wartość dla SetupExecute wskazuje, że Srdelayed.exe znajduje się w folderze System32, a plik tekstowy nosi nazwę DelayedOperations:
C:\Windows\System32\srdelayed.exe \\?? \C:\temp\DelayedOperations
Spacje w ścieżce i nazwie powinny być zakodowane szesnastkowe. Na przykład w przypadku Program Fileszakoduj ścieżkę jako "\\?? \C:Program%20Files\a.dll".
Gdy rejestr lub system jest przywracany po ponownym uruchomieniu, aplikacja musi upewnić się, że SetupExecute jest zapisywany we właściwym gałąź rejestru. Odzyskiwanie rejestru jest wykonywane przed uruchomieniem Srdelayed.exe. Aplikacja musi zapisać SetupExecute do odzyskanej wersji rejestru, ponieważ jest to wersja odczytywana.
Format pliku wejściowego Srdelayed
Wszystkie informacje potrzebne do wykonania operacji zarządzania plikami są określane jako ciąg znaków Unicode w pliku tekstowym Unicode. Ciąg znaków Unicode jest podzielony na rekordy, które są podzielone na cztery pola. Każdy rekord określa pojedynczy plik przenoszenia, usuń plik lub ustaw operację krótkiej nazwy. Cztery pola każdego rekordu zawierają parametry operacji. Srdelayed.exe wykonuje każdą operację w kolejności, w jaką ich rekordy występują w ciągu. Aplikacja powinna sprawdzać wszelkie zduplikowane rekordy w tym pliku i usuwać duplikaty.
Poniższy ciąg ilustruje format pliku żądającego dwóch operacji i składający się z dwóch rekordów. Każde pole parametru kończy się pojedynczym znakiem L'\0. Rekord składa się z czterech kolejnych pól. Dodatkowy pojedynczy znak L'\0 jest dołączany na końcu wszystkich rekordów.
<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------------------------|
Znaczenie pierwszych, drugich, trzecich i czwartych pól parametrów zależy od tego, czy rekord opisuje operację przenoszenia, usuwania lub ustawiania krótkiej nazwy.
Formatowanie rekordu pliku przenoszenia
Pole 1 identyfikuje to jako żądanie przeniesienia pliku. Wartość w tym polu to zawsze L"MoveFile" i uwzględnia wielkość liter.
Pole 2 określa lokalizację źródłową pliku. Operacja przenoszenia Srdelayed nie obsługuje przenoszenia folderu. W tym polu należy określić plik. Wartość tego pola jest pełną ścieżką pliku dołączonego do "\\?? \" chyba że ścieżka zawiera globalnie unikatowy identyfikator (GUID), który używa "\\?\" jako prefiksu. Czy usunąć "\\?\" przed dołączeniem do "\\?? \".
Pole 3 określa miejsce docelowe pliku. Operacja przenoszenia pliku działa tylko w ramach woluminu. Źródło i miejsce docelowe muszą znajdować się na tym samym woluminie. Wartość tego pola jest pełną ścieżką pliku dołączonego do "\\?? \" chyba że ścieżka zawiera globalnie unikatowy identyfikator (GUID), który używa "\\?\" jako prefiksu. Czy usunąć "\\?\" przed dołączeniem do "\\?? \".
Pole 4 otrzymuje informacje o stanie od Srdelayed. Wartość w tym polu powinna być ustawiona na L"NotExecuted" dla nowego rekordu.
Poniższy przykład odwołuje się do pliku według ścieżki dysku. Jeśli ścieżka i nazwa źródła jest C:\Stage\a.dll, ten rekord żąda, aby Srdelayed przenieść go do C:\temp\a.dll.
MoveFile \\?? \C:\Stage\a.dll \\?? \C:\temp\a.dll NotExecuted
Poniższy przykład odwołuje się do pliku według ścieżki identyfikatora GUID woluminu. Jeśli ścieżka i nazwa źródła to \\?\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\Stage\a.dll, ten rekord żąda, że Srdelayed przenieść go do \\?\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
Formatowanie rekordu usuwania pliku
Pole 1 identyfikuje to jako żądanie usunięcia pliku. Wartość w tym polu to zawsze L"DeleteFile" i uwzględnia wielkość liter.
Pole 2 jest nieużywane. Wartość w tym polu powinna być ustawiona na L"Nieużywane".
Pole 3 określa plik do usunięcia. Aby usunąć folder, musi być pusty. Użyj operacji usuwania plików, aby usunąć wszystkie pliki w folderze przed usunięciem folderu. Wartość tego pola jest pełną ścieżką pliku dołączonego do "\\?? \" chyba że ścieżka zawiera globalnie unikatowy identyfikator (GUID), który używa "\\?\" jako prefiksu. Czy usunąć "\\?\" przed dołączeniem do "\\?? \".
Pole 4 otrzymuje informacje o stanie od Srdelayed. Wartość w tym polu powinna być ustawiona na L"NotExecuted" dla nowego rekordu.
Poniższy przykład odwołuje się do pliku według ścieżki dysku. Jeśli ścieżka i nazwa są C:\temp\b.dll, ten rekord żąda usunięcia pliku przez program Srdelayed.
DeleteFile Nieużywane \\?? \C:\temp\b.dll NotExecuted
Poniższy przykład odwołuje się do pliku według identyfikatora GUID woluminu. Jeśli ścieżka i nazwa to \\?\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\temp\b.dll, ten rekord żąda usunięcia pliku przez Srdelayed.
DeleteFile Nieużywane \\??\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\temp\b.dll\ NotExecuted
Format dla ustawiania rekordu Short-Name
Pole 1 identyfikuje to jako żądanie ustawienia krótkiej nazwy pliku. Wartość w tym polu to zawsze L"SetFileShortName" i uwzględnia wielkość liter.
Pole 2 określa krótką nazwę.
Pole 3 określa ścieżkę i długą nazwę, aby otrzymać krótką nazwę. Wartość tego pola to ścieżka i długa nazwa pliku dołączonego do "\\?? \" chyba że ścieżka zawiera globalnie unikatowy identyfikator (GUID), który używa "\\?\" jako prefiksu. Czy usunąć "\\?\" przed dołączeniem do "\\?? \".
Pole 4 otrzymuje informacje o stanie od Srdelayed. Wartość w tym polu powinna być ustawiona na L"NotExecuted" dla nowego rekordu.
Poniższy przykład odwołuje się do pliku według ścieżki dysku. Jeśli ścieżka i nazwa pliku to 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
Poniższy przykład odwołuje się do pliku według identyfikatora GUID woluminu. Jeśli ścieżka i nazwa pliku to \\?\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
Stan operacji Srdelayed
Srdelayed zapisuje ciąg L"SC=xxxxxxx" w czwartym polu każdego rekordu pliku tekstowego, gdzie xxxxxxx jest szesnastkowym, który wskazuje stan żądanej operacji. Wartość zero wskazuje, że operacja zakończyła się pomyślnie.
Srdelayed tworzy klucz rejestru o nazwie SystemRestore w HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion w celu zarejestrowania wyniku całej operacji przywracania. Jeśli Srdelayed wykonuje wszystkie żądane operacje z powodzeniem, nazwa RestoreStatusResult jest zapisywana pod tym kluczem z wartością zero. Jeśli Srdelayed nie może wykonać żadnej z żądanych operacji, nazwy RestoreStatusResult i RestoreStatusDetails są zapisywane w tym kluczu z wartościami niezerowymi. Nazwa RestoreStatusDetails jest zapisywana w tym kluczu tylko wtedy, gdy Srdelayed nie może wykonać żadnych żądanych operacji. Jeśli operacja ustawiania krótkiej nazwy pliku nie powiedzie się, Srdelayed kontynuuje następną operację. Srdelayed uważa, że operacje przenoszenia pliku i usuwania plików mają krytyczne znaczenie i nie są kontynuowane, jeśli operacja przenoszenia lub usuwania nie powiedzie się.