Bagikan melalui


Srdelayed.exe

Aplikasi yang melakukan operasi pemulihan status sistem di awal startup sistem operasi mungkin tidak dapat menggunakan fungsi manajemen file untuk memindahkan, menghapus, atau mengatur nama pendek file sistem tertentu. Srdelayed.exe adalah file yang dapat dieksekusi, disediakan dengan fitur Windows Server Backup (WSB) di Windows Server 2008, yang dapat memungkinkan aplikasi pemulihan status sistem untuk memindahkan, menghapus, dan mengatur nama pendek file sistem.

Alat Srdelayed ditujukan untuk aplikasi pemulihan status sistem; ini tidak menggantikan fungsi manajemen file. Alat ini harus digunakan hanya ketika aplikasi tidak dapat memindahkan, menghapus, atau mengatur nama pendek file sistem menggunakan fungsi MoveFileEx, DeleteFile, dan SetFileShortName. Selama pemulihan dan mulai ulang status sistem, Srdelayed.exe digunakan oleh Pemulihan Sistem dan alat baris perintah wbadmin.exe untuk memindahkan, menghapus, dan mengatur nama pendek pada file sistem tertentu. Oleh karena itu, Srdelayed dapat berguna bagi pengembang yang memerlukan kemampuan untuk memulihkan file sistem ini dalam aplikasi pemulihan status sistem mereka sendiri.

Srdelayed dapat melakukan operasi berikut:

Untuk menggunakan Srdelayed, aplikasi Anda memerlukan jalur lengkap ke lokasi file Srdelayed.exe dan jalur lengkap ke file teks Unicode yang telah Anda tulis untuk berisi informasi yang diperlukan alat untuk melakukan semua operasi manajemen file yang diminta. Aplikasi Anda bertanggung jawab untuk memastikan bahwa file teks ini tidak berisi permintaan berlebihan untuk operasi dan menangani urutan operasi manajemen file yang diperlukan. Misalnya, karena folder harus kosong untuk dihapus, aplikasi Anda perlu memastikan bahwa file teks menentukan penghapusan semua file di dalam folder sebelum meminta folder dihapus.

Jika entri SetupExecute belum ada di registri, aplikasi Anda perlu membuat entri jenis REG_MULTI_SZ bernama SetupExecute di bawah kunci registri berikut: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager.

Aplikasi Anda harus menggunakan format berikut untuk mengatur nilai SetupExecute ke jalur lengkap ke lokasi file Srdelayed.exe dan jalur lengkap ke lokasi file teks. Awalan "\\?? \" ke jalur file teks, sebagai berikut:

Jalur Lengkap ke Srdelayed.exe \\?? \Jalur Lengkap ke file Teks

Misalnya, nilai berikut untuk SetupExecute menunjukkan bahwa Srdelayed.exe terletak di folder System32 dan file teks diberi nama DelayedOperations:

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

Spasi di jalur dan nama harus dikodekan heksadesimal. Misalnya, untuk File Program, enkode jalur sebagai "\\?? \C:Program%20Files\a.dll".

Ketika registri atau sistem sedang dipulihkan setelah dihidupkan ulang, aplikasi Anda perlu memastikan bahwa SetupExecute ditulis dalam sarang registri yang benar. Pemulihan registri dilakukan sebelum Srdelayed.exe dijalankan. Aplikasi perlu menulis SetupExecute ke dalam versi registri yang dipulihkan karena ini adalah versi yang dibaca.

Format untuk File Input Tertunda

Semua informasi yang diperlukan Srdelayed untuk melakukan operasi manajemen file ditentukan sebagai string karakter Unicode dalam file teks Unicode. String karakter Unicode dipartisi ke dalam rekaman yang masing-masing dipartisi menjadi empat bidang. Setiap rekaman menentukan satu file pemindahan, menghapus file, atau mengatur operasi nama pendek. Empat bidang dari setiap rekaman berisi parameter untuk operasi. Srdelayed.exe melakukan setiap operasi dalam urutan rekaman mereka terjadi dalam string. Aplikasi Anda harus memeriksa rekaman duplikat apa pun dalam file ini dan menghapus duplikat.

String berikut mengilustrasikan format untuk file yang meminta dua operasi dan terdiri dari dua rekaman. Setiap bidang parameter berakhir dengan satu karakter L'\0'. Rekaman terdiri dari empat bidang berturut-turut. Karakter L'\0' tunggal tambahan ditambahkan ke akhir semua rekaman.

<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------------------------|

Arti bidang parameter pertama, kedua, ketiga, dan keempat bergantung pada apakah catatan menjelaskan operasi pemindahan, hapus, atau atur nama pendek.

Format untuk Pindahkan Rekaman File

Bidang 1 mengidentifikasi ini sebagai permintaan untuk memindahkan file. Nilai dalam bidang ini selalu L"MoveFile" dan peka huruf besar/kecil.

Bidang 2 menentukan lokasi sumber file. Operasi file pemindahan tertunda tidak mendukung pemindahan folder. File harus ditentukan di bidang ini. Nilai untuk bidang ini adalah jalur lengkap file yang ditambahkan ke "\\?? \" kecuali jalur menyertakan pengidentifikasi unik global (GUID), yang menggunakan "\\?\" sebagai awalan. Hapus "\\?\" sebelum menambahkan ke "\\?? \".

Bidang 3 menentukan tujuan file. Operasi pindahkan file hanya berfungsi dalam volume. Sumber dan tujuan harus berada pada volume yang sama. Nilai untuk bidang ini adalah jalur lengkap file yang ditambahkan ke "\\?? \" kecuali jalur menyertakan pengidentifikasi unik global (GUID), yang menggunakan "\\?\" sebagai awalan. Hapus "\\?\" sebelum menambahkan ke "\\?? \".

Bidang 4 menerima informasi status dari Srdelayed. Nilai dalam bidang ini harus diatur ke L"NotExecuted" untuk rekaman baru.

Contoh berikut mereferensikan file menurut jalur drive. Jika jalur dan nama sumber adalah C:\Stage\a.dll, rekaman ini meminta agar Srdelayed memindahkannya ke C:\temp\a.dll.

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

Contoh berikut mereferensikan file menurut jalur GUID volume. Jika jalur dan nama sumber adalah \\?\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\Stage\a.dll, rekaman ini meminta Srdelayed memindahkannya ke \\?\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 untuk Hapus Rekaman File

Bidang 1 mengidentifikasi ini sebagai permintaan untuk menghapus file. Nilai dalam bidang ini selalu L"DeleteFile" dan peka huruf besar/kecil.

Bidang 2 tidak digunakan. Nilai dalam bidang ini harus diatur ke L"Tidak Digunakan".

Bidang 3 menentukan file yang akan dihapus. Folder harus kosong untuk dihapus. Gunakan operasi hapus file untuk menghapus semua file dalam folder sebelum menghapus folder. Nilai untuk bidang ini adalah jalur lengkap file yang ditambahkan ke "\\?? \" kecuali jalur menyertakan pengidentifikasi unik global (GUID), yang menggunakan "\\?\" sebagai awalan. Hapus "\\?\" sebelum menambahkan ke "\\?? \".

Bidang 4 menerima informasi status dari Srdelayed. Nilai dalam bidang ini harus diatur ke L"NotExecuted" untuk rekaman baru.

Contoh berikut mereferensikan file menurut jalur drive. Jika jalur dan namanya adalah C:\temp\b.dll, rekaman ini meminta agar Srdelayed menghapus file.

DeleteFile Tidak Digunakan \\?? \C:\temp\b.dll NotExecuted

Contoh berikut mereferensikan file menurut GUID volume. Jika jalur dan namanya adalah \\?\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\temp\b.dll, rekaman ini meminta agar Srdelayed menghapus file.

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

Format untuk Atur Catatan Nama Pendek

Bidang 1 mengidentifikasi ini sebagai permintaan untuk mengatur nama pendek file. Nilai dalam bidang ini selalu L"SetFileShortName" dan peka huruf besar/kecil.

Bidang 2 menentukan nama pendek.

Bidang Bidang 3 menentukan jalur dan nama panjang untuk menerima nama pendek. Nilai untuk bidang ini adalah jalur dan nama panjang file ditambahkan ke "\\?? \" kecuali jalur menyertakan pengidentifikasi unik global (GUID), yang menggunakan "\\?\" sebagai awalan. Hapus "\\?\" sebelum menambahkan ke "\\?? \".

Bidang 4 menerima informasi status dari Srdelayed. Nilai dalam bidang ini harus diatur ke L"NotExecuted" untuk rekaman baru.

Contoh berikut mereferensikan file menurut jalur drive. Jika jalur dan nama file adalah C:\temp\ShortFileName.dll, rekaman ini meminta agar file menerima nama pendek, ShortN~1.dll.

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

Contoh berikut mereferensikan file menurut GUID volume. Jika jalur dan nama file adalah \\?\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\temp\ShortFileName.dll\, rekaman ini meminta agar file menerima nama pendek, ShortN~1.dll.

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

Status Operasi Tertunda

Srdelayed menulis string L"SC=xxxxxxxx" ke bidang keempat dari setiap rekaman file teks, di mana xxxxxxx adalah heksadesimal yang menunjukkan status operasi yang diminta. Nilai nol menunjukkan operasi berhasil.

Srdelayed membuat kunci registri bernama SystemRestore di bawah HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion untuk mencatat hasil dari seluruh operasi pemulihan. Jika Srdelayed melakukan semua operasi yang diminta dengan sukses, nama RestoreStatusResult ditulis di bawah kunci ini dengan nilai nol. Jika Srdelayed tidak dapat melakukan salah satu operasi yang diminta, nama RestoreStatusResult dan RestoreStatusDetails ditulis di bawah kunci ini dengan nilai bukan nol. Nama RestoreStatusDetails ditulis di bawah kunci ini hanya jika Srdelayed tidak dapat melakukan operasi yang diminta. Jika operasi untuk mengatur nama pendek file tidak berhasil, Srdelayed berlanjut ke operasi berikutnya. Srdelayed menganggap operasi memindahkan file dan menghapus file menjadi penting dan tidak melanjutkan jika operasi pemindahan atau penghapusan tidak berhasil.