ฉันจะระบุรายการ REG_EXPAND_SZ ในไฟล์. REG ได้อย่างไร


9

ฉันกำลังพยายามใช้ชุดสคริปต์และ.regไฟล์เพื่อตั้งค่าบริการที่กำหนดเองบางอย่าง คีย์ส่วนใหญ่มีการตั้งค่าอย่างถูกต้อง แต่ฉันต้องตั้งค่าDependOnServiceคีย์สำหรับบริการบางอย่างซึ่งโดยปกติจะเป็นหลายสาย เป็นไปได้หรือไม่ที่จะตั้งค่าคีย์นี้จาก.regไฟล์หรือต้องป้อนข้อมูลด้วยตนเอง

คำตอบ:


13

REG_MULTI_SZข้อมูลใน.regไฟล์จะต้องเข้ารหัสเป็นเลขฐานสิบหก หากเนื้อหาไม่เปลี่ยนแปลงคุณสามารถสร้างรายการจำลองในรีจิสทรีของคุณด้วยข้อมูลส่งออกและปรับให้ตรงกับความต้องการของคุณ

หากมีการเปลี่ยนแปลงอาจเป็นเรื่องง่ายกว่าที่จะใช้regโปรแกรมที่มาพร้อมกับ Windows เพื่อเพิ่มโปรแกรม หากต้องการทำเช่นนั้นโทรregในรูปแบบนี้:

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

สวิตช์แยกเป็นอุปกรณ์เสริม หากไม่ได้ใช้สตริงที่จะเขียนควรแยกโดยลำดับ escape สำหรับอักขระ null ( \0) ยกตัวอย่างเช่นเพื่อเพิ่มรายการที่มีชื่อFlairไปHKLM\SOFTWARE\WhizBang\Excite-O-Ramaกับสตริงfoo, barและbazคุณจะทำงาน:

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

หากต้องการแยกข้อมูลด้วยเครื่องหมายจุลภาคแทนคุณจะเรียกใช้:

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

สำหรับข้อมูลเพิ่มเติมปรึกษา Microsoft Docs สำหรับRegคำสั่ง


4
คำตอบที่ดี (ใช้.batไฟล์ที่มีregคำสั่งแทนที่จะเป็น.regไฟล์) แต่ทำไมมันถึงพูดถึง REG_MULTI_SZ เมื่อคำถามเกี่ยวกับ REG_EXPAND_SZ?
Norswap

1
  • dword: = DWORD
  • hex(2): = สายอักขระที่ขยายได้
  • hex(7): = Multi-String

A DWORDคือเลขจำนวนเต็ม 32 บิตที่ไม่ได้ลงชื่อ (ช่วงทศนิยม: 0- 4294967295) และในรีจิสทรี a DWORDจะเริ่มต้นด้วยเสมอ0xและมี 8 หลักตามมา0xเสมอ สามารถอยู่ในรูปแบบทศนิยมหรือเลขฐานสิบหก ตัวอย่างเช่น1000สามารถเขียนเป็นหรือ0x000010000x000003e8

DWORDSสามารถใช้ตัวเลขได้เท่านั้น0- 9เงื่อนไขใด ๆ มักจะใช้ ASCII และใน ACSII, เพียงสามารถเขียนเป็น1000 31,30,30,30สำหรับชนิดข้อมูลแบบสตริง ASCII จะทำงานในพื้นหลังโดยที่คุณไม่รู้ตัวเพราะคอมพิวเตอร์เข้าใจเฉพาะ 1s และ 0s

สำหรับประเภทข้อมูล Expandable-String และ Multi-String สิ่งเหล่านี้บันทึกรายการของคุณเป็นชุดของรหัส ASCII ในรูปแบบเลขฐานสิบหกคั่นด้วยเครื่องหมายจุลภาคและเลขศูนย์เลขฐานสิบหก; ดังนั้นสายอักขระที่ขยายได้ของ1000จะเป็นhex(2):31,00,30,00,30,00,30,00

มาแปลง%PROGRAMFILES%เป็นสตริงที่ขยายได้:

  1. ใช้เครื่องมือการแปลง ASCII ถึง Hexป้อนข้อมูล%PROGRAMFILES%ลงในกล่องข้อความตัวคั่นเอาต์พุตที่ผู้ใช้กำหนด: %เลือกแปลงและจะให้:
    %25%50%52%4F%47%52%41%4D%46%49%4C%45%53%25
  2. คัดลอก / วางผลลัพธ์นั้นลงในตัวแก้ไขข้อความ: ย้ายส่วนแรก%ไปยังจุดสิ้นสุดค้นหา / แทนที่ทั้งหมด%ด้วย,00,และลบเครื่องหมายจุลภาคที่ส่วนท้ายสุดของสตริง คุณควรได้รับ:
    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. สุดท้าย:
    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

บทเรียนนี้มีความรู้ทั้งหมดที่จำเป็นในการสร้างรายการรีจิสตรี hex-coded ที่ไม่ได้เข้ารหัส


1
ลิงค์ hotfile เป็นเพียงไฟล์เก็บถาวร 7z พร้อมหน้า html (ที่มีตัวแปลง) ที่เก็บอยู่ภายใน ทำไมไม่เชื่อมโยงไปยังหน้าเว็บของตัวเอง?
John Bensin

1
เพื่อหลีกเลี่ยงการเน่าลิงค์โปรดโพสต์ข้อมูลที่เกี่ยวข้องทั้งหมดในคำตอบของคุณ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีตอบคำถามโปรดดูวิธีตอบ
50-3
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.