Bagaimana cara menentukan entri REG_EXPAND_SZ dalam file .REG?

9

Saya mencoba menggunakan skrip batch dan .regfile untuk mengatur beberapa layanan khusus. Sebagian besar kunci sedang diatur dengan benar, tetapi saya perlu mengatur DependOnServicekunci untuk beberapa layanan, yang biasanya multi-string. Apakah mungkin untuk mengatur kunci ini dari .regfile, atau akankah diperlukan entri manual?

MBraedley
sumber

Jawaban:

13

REG_MULTI_SZdata dalam .regfile harus dikodekan dalam heksadesimal. Jika konten tidak pernah berubah, Anda dapat membuat item dummy di registri Anda dengan data, mengekspornya, dan menyesuaikannya dengan kebutuhan Anda.

Jika itu berubah, mungkin akan jauh lebih mudah untuk menggunakan regprogram yang disertakan dengan Windows untuk menambahkannya. Untuk melakukannya, panggil regdalam format ini:

Reg Add <KEY> /v <NAME> /t REG_MULTI_SZ /d <DATA> /s <SEPERATOR>

Sakelar pemisah bersifat opsional. Jika tidak digunakan, string yang akan ditulis harus dipisahkan oleh urutan escape untuk karakter null ( \0). Misalnya, untuk menambahkan item bernama Flairuntuk HKLM\SOFTWARE\WhizBang\Excite-O-Ramadengan string foo, bardan bazAnda akan menjalankan:

Reg Add HKLM\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo\0bar\0baz

Untuk memisahkan data dengan koma, Anda akan menjalankan:

Reg Add HKLM\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo,bar,baz /s ,

Untuk informasi lebih lanjut, lihat Microsoft Documents untuk Regperintahnya.

Tambalan
sumber
4
Jawaban yang bagus (menggunakan .batfile dengan regperintah alih-alih .regfile), tetapi mengapa ini berbicara tentang REG_MULTI_SZ ketika pertanyaannya adalah tentang REG_EXPAND_SZ?
Norswap
0
  • dword: = DWORD
  • hex(2): = Expandable-String
  • hex(7): = Multi-String

A DWORDadalah bilangan bulat 32-bit unsigned (rentang desimal: 0- 4294967295), dan, dalam registri, a DWORDselalu dimulai dengan 0xdan memiliki 8 digit yang mengikuti 0x. Ini bisa dalam format desimal atau heksadesimal; misalnya, 1000dapat ditulis sebagai 0x00001000atau 0x000003e8.

DWORDShanya dapat menggunakan digit 0- 9. String, apa pun jenisnya, selalu menggunakan ASCII, dan dalam ACSII, 1000hanya dapat ditulis sebagai 31,30,30,30. Untuk tipe data String, ASCII bekerja di latar belakang tanpa Anda ketahui karena komputer hanya memahami angka 1 dan 0.

Untuk tipe data Expandable-String dan Multi-String, ini menyimpan entri Anda sebagai serangkaian kode ASCII dalam format heksadesimal, dipisahkan oleh koma dan hex nol; jadi String yang Dapat Diperluas dari 1000akanhex(2):31,00,30,00,30,00,30,00

Mari kita konversi %PROGRAMFILES%menjadi String yang Dapat Diperluas:

  1. Gunakan ASCII ke Hex Conversion Tool , masukan %PROGRAMFILES%ke dalam kotak teks, Pembatas keluaran yang ditentukan pengguna:, %pilih Konversi, dan itu akan memberi Anda:
    %25%50%52%4F%47%52%41%4D%46%49%4C%45%53%25
  2. Salin / tempel hasil itu ke dalam editor teks: Pindahkan yang pertama %ke akhir, Temukan / Ganti semua %dengan ,00,dan hapus koma di bagian paling akhir dari string. Anda harus mendapatkan:
    25,00,50,00,52,00,4F,00,47,00,52,00,41,00,4D,00,46,00,49,00,4C,00,45,00,53,00,25,00
  3. Akhirnya:
    hex(2):25,00,50,00,52,00,4F,00,47,00,52,00,41,00,4D,00,46,00,49,00,4C,00,45,00,53,00,25,00

Pelajaran ini berisi semua pengetahuan yang diperlukan untuk merekayasa balik entri registri hex-coded yang tidak dienkripsi.

DarkReverser
sumber
1
Tautan hotfile hanya arsip 7z dengan halaman html (yang berisi konverter) disimpan di dalamnya. Mengapa tidak hanya menautkan ke halaman web itu sendiri?
John Bensin
1
Untuk menghindari pembusukan tautan, poskan semua informasi yang relevan dalam jawaban Anda. untuk informasi lebih lanjut tentang cara menjawab pertanyaan, lihat Cara Menjawab
50-3