Làm cách nào tôi có thể chỉ định các mục REG_EXPAND_SZ trong tệp .REG?


9

Tôi đang cố gắng sử dụng tập lệnh bó và .regtập tin để thiết lập một số dịch vụ tùy chỉnh. Hầu hết các khóa đang được thiết lập đúng, nhưng tôi cần đặt DependOnServicekhóa cho một số dịch vụ, thường là đa chuỗi. Có thể đặt khóa này từ một .regtệp, hoặc sẽ yêu cầu nhập thủ công?

Câu trả lời:


13

REG_MULTI_SZdữ liệu trong .regtệp phải được mã hóa theo hệ thập lục phân. Nếu nội dung không bao giờ thay đổi, bạn có thể tạo một mục giả trong sổ đăng ký của mình bằng dữ liệu, xuất nó và điều chỉnh nội dung đó theo nhu cầu của bạn.

Nếu nó thay đổi, có lẽ sẽ dễ dàng hơn nhiều để sử dụng regchương trình đi kèm với Windows để thêm nó. Để làm như vậy, hãy gọi regtheo định dạng này:

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

Việc chuyển đổi tách biệt là tùy chọn. Nếu không được sử dụng, các chuỗi được viết nên được phân tách bằng chuỗi thoát cho ký tự null ( \0). Ví dụ, để thêm một mục tên Flairđể HKLM\SOFTWARE\WhizBang\Excite-O-Ramavới các dây foo, barbazbạn phải chạy lệnh:

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

Để phân tách dữ liệu bằng dấu phẩy thay vào đó, bạn sẽ chạy:

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

Để biết thêm thông tin, tham khảo Microsoft Docs cho Reglệnh.


4
Câu trả lời tuyệt vời (sử dụng .battệp có reglệnh thay vì .regtệp), nhưng tại sao nó lại nói về REG_MULTI_SZ khi câu hỏi là về REG_EXPAND_SZ?
Norswap

0
  • dword: = = DWORD
  • hex(2): = Chuỗi mở rộng
  • hex(7): = Đa chuỗi

A DWORDlà số nguyên không dấu 32 bit (phạm vi thập phân: 0- 4294967295) và trong sổ đăng ký, DWORDluôn luôn bắt đầu bằng 0xvà có 8 chữ số theo sau 0x. Điều này có thể ở định dạng thập phân hoặc thập lục phân; ví dụ, 1000có thể được viết là 0x00001000hoặc 0x000003e8.

DWORDSchỉ có thể sử dụng các chữ số 0- 9. Các chuỗi, dưới bất kỳ hình thức nào, luôn luôn sử dụng ASCII và trong ACSII, 1000chỉ có thể được viết dưới dạng 31,30,30,30. Đối với kiểu dữ liệu Chuỗi, ASCII hoạt động ở chế độ nền mà bạn không hề biết vì máy tính chỉ hiểu 1s và 0.

Đối với các kiểu dữ liệu Chuỗi mở rộng và Đa chuỗi, các mục này lưu các mục nhập của bạn dưới dạng một chuỗi mã ASCII theo định dạng thập lục phân, được phân tách bằng dấu phẩy và số 0; vì vậy một chuỗi có thể mở rộng 1000sẽ làhex(2):31,00,30,00,30,00,30,00

Hãy chuyển đổi %PROGRAMFILES%thành Chuỗi mở rộng:

  1. Sử dụng Công cụ chuyển đổi ASCII sang Hex , nhập %PROGRAMFILES%vào hộp văn bản, Dấu phân tách đầu ra do người dùng xác định : %, chọn Chuyển đổi và nó sẽ cung cấp cho bạn:
    %25%50%52%4F%47%52%41%4D%46%49%4C%45%53%25
  2. Sao chép / dán kết quả vào trình soạn thảo văn bản: Di chuyển đầu tiên %đến cuối, Tìm / Thay thế tất cả %bằng ,00,và xóa dấu phẩy ở cuối chuỗi. Bạn sẽ nhận được:
    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. Cuối cùng:
    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

Bài học này chứa tất cả các kiến ​​thức cần thiết để thiết kế ngược bất kỳ mục đăng ký mã hóa hex nào không được mã hóa.


1
Liên kết hotfile chỉ là kho lưu trữ 7z với trang html (có chứa trình chuyển đổi) được lưu trữ bên trong. Tại sao không chỉ liên kết đến trang web chính nó?
John Bensin

1
Để tránh thối liên kết xin vui lòng gửi tất cả các thông tin có liên quan trong câu trả lời của bạn. để biết thêm thông tin về cách trả lời câu hỏi, vui lòng xem Cách trả lời
50-3
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.