hivexregedit(1) رجیستری ویندوز hivexregedit(1)

hivexregedit - ادغام و صدور تغییرات رجیستری از فایل‌های با قالب regedit

hivexregedit --merge [--prefix prefix] [--encoding enc] \
        hivefile [regfile]
hivexregedit --export [--prefix prefix] hivefile key > regfile

لطفاً توجه داشته باشید که hivexregedit یک ابزار سطح پایین برای دستکاری مستقیم فایل‌های هایو (hive) است. برای ادغام یا استخراج تغییرات رجیستری در ماشین‌های مجازی ویندوز، بهتر است از virt-win-reg(1) استفاده کنید.

با داشتن یک فایل باینری محلی ("hive")، دو حالت کاری وجود دارد. گزینه "--merge" تغییرات را از یک فایل با قالب regedit درون هایو وارد (ادغام) می‌کند. این کار مشابه استفاده از سوئیچ "/s" در دستور regedit.exe ویندوز است.

گزینه "--export" یک کلید رجیستری را (به‌صورت بازگشتی) به قالب regedit صادر می‌کند.

ابزار "hivexregedit" انتظار دارد که فایل‌های regedit از قبل با کدگذاری محلی بازکدگذاری (re-encode) شده باشند. معمولاً روی میزبان‌های لینوکس، این به معنای UTF-8 با پایان خطوط سبک یونیکس است. از آنجا که فایل‌های regedit ویندوز غالباً با کدگذاری UTF-16LE و پایان خطوط سبک ویندوز هستند، ممکن است لازم باشد کل فایل را پیش یا پس از پردازش مجدداً کدگذاری کنید.

برای تبدیل مجدد کدگذاری یک فایل از قالب ویندوز به لینوکس (پیش از پردازش آن با گزینه "--merge")، می‌توانید کاری مانند این انجام دهید:

iconv -f utf-16le -t utf-8 < win.reg | dos2unix > linux.reg

برای انجام عکس این عمل، پس از استفاده از "--export" و پیش از ارسال فایل به یک کاربر ویندوز، کاری مانند این انجام دهید:

unix2dos < linux.reg | iconv -f utf-8 -t utf-16le > win.reg

برای اطلاعات بیشتر درباره کدگذاری، به Win::Hivex::Regedit(3) مراجعه کنید.

اگر درباره کدگذاری فعلی مطمئن نیستید، از دستور file(1) استفاده کنید. نسخه‌های اخیر regedit.exe ویندوز فایلی با کدگذاری UTF-16LE و پایان خطوط سبک ویندوز (CRLF) تولید می‌کنند، مانند این:

$ file software.reg
software.reg: Little-endian UTF-16 Unicode text, with very long lines,
with CRLF line terminators

این فایل پیش از اینکه بتوانید آن را با "--merge" ادغام کنید نیاز به تبدیل دارد.

هنگام ارسال پارامترهای حاوی "\" (بک‌اسلش) در پوسته دقت کنید. معمولاً برای محافظت از آن‌ها در برابر پوسته باید از 'تک‌کویتیشن' یا دو بک‌اسلش (نه هر دو همزمان) استفاده کنید.

کلیدهای رجیستری مانند "CurrentControlSet" در واقع در رجیستری ویندوز در سطح فایل هایو وجود ندارند و بنابراین نمی‌توانید آن‌ها را تغییر دهید.

کلید "CurrentControlSet" معمولاً یک نام مستعار برای "ControlSet001" است. در برخی شرایط ممکن است به مجموعه کنترلی دیگری اشاره کند. راه فهمیدن این موضوع بررسی کلید "HKLM\SYSTEM\Select" است:

$ hivexregedit --export SYSTEM '\Select'
[\Select]
"Current"=dword:00000001
"Default"=dword:00000001
"Failed"=dword:00000000
"LastKnownGood"=dword:00000002

مقدار "Current" همان گزینه‌ای است که ویندوز هنگام بوت انتخاب می‌کند.

به طور مشابه، سایر کلیدهای "Current..." در مسیر نیز ممکن است نیاز به جایگزینی داشته باشند.

$ virt-cat WindowsGuest /Windows/System32/config/software > software.hive
$ hivexregedit --export \
    --prefix 'HKEY_LOCAL_MACHINE\SOFTWARE' \
    software.hive '\Microsoft' > ms-keys.reg
$ hivexregedit --merge system.hive \
    --prefix 'HKEY_LOCAL_MACHINE\SYSTEM' additions.reg

نمایش راهنما.
فعال کردن اشکال‌زدایی در کتابخانه hivex. این گزینه برای عیب‌یابی باگ‌ها و همچنین فایل‌های هایو ناقص یا آسیب‌دیده مفید است.
hivexregedit --merge [--prefix prefix] [--encoding enc] \
        hivefile [regfile]

ادغام "regfile" (یک فایل متنی با قالب regedit) درون هایو "hivefile". اگر "regfile" مشخص نشود، برنامه از ورودی استاندارد می‌خواند. (همچنین می‌توانید چندین فایل ورودی بدهید).

گزینه "--prefix" پیشوند رجیستری ویندوز را مشخص می‌کند. هنگام کار با فایل‌های واقعی هایو، تقریباً همیشه استفاده از آن ضروری است.

گزینه "--encoding" کدگذاری رشته‌های بدون علامت را در ورودی مشخص می‌کند. مقدار پیش‌فرض آن "UTF-16LE" است که باید برای نسخه‌های اخیر ویندوز کار کند. احتمال دیگر استفاده از "ASCII" است.

hivexregedit --export [--prefix prefix] hivefile key > regfile

مقدار "key" مسیری درون هایو "hivefile" است. (کلید نباید شامل هیچ پیشوندی باشد و باید در کوتیشن قرار گیرد تا از بک‌اسلش‌ها در برابر پوسته محافظت شود). این کلید به‌صورت بازگشتی با قالب متنی regedit در خروجی استاندارد صادر می‌شود.

گزینه "--prefix" پیشوند رجیستری ویندوز را مشخص می‌کند. هنگام کار با فایل‌های واقعی هایو، تقریباً همیشه استفاده از آن ضروری است.

فایل‌های هایو و نام کلیدهای رجیستری ویندوز ارتباط غیرمستقیم دارند. به عنوان مثال، درون هایو software، تمام کلیدها نسبت به "HKEY_LOCAL_MACHINE\SOFTWARE" ذخیره می‌شوند. بنابراین "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft" در فایل هایو به صورت "\Microsoft" ظاهر می‌شود.

قالب خود هایو این پیشوند را ذخیره نمی‌کند، بنابراین باید آن را بر اساس اطلاعات بیرونی ارائه دهید. (ابزار virt-win-reg(1) در کنار ابزارهای دیگر، پیشاپیش این موضوع را می‌داند).

معمولاً هنگام انجام ادغام‌ها و صادرات، ارسال پارامتر "--prefix 'HKEY_LOCAL_MACHINE\SOFTWARE'" یا مشابه آن کافی است.

هنگام ادغام (صرفاً)، ممکن است لازم باشد کدگذاری رشته‌های مورد استفاده در فایل هایو را مشخص کنید. این مورد به تفصیل در بخش "ENCODING STRINGS" در Win::Hivex::Regedit(3) توضیح داده شده است.

پیش‌فرض استفاده از UTF-16LE است که با نسخه‌های اخیر ویندوز کار می‌کند.

هنگام صدور (صرفاً)، رشته‌ها UTF-16LE فرض شده و به جای توالی‌های هگز به صورت رشته چاپ می‌شوند. همچنین کدپوینت صفر پایانی از رشته‌ها (در صورت وجود) حذف می‌شود.

این گزینه ناامن است و وفاداری رشته‌ها را در هایو اصلی به دلایل مختلف حفظ نمی‌کند:

  • فرض می‌کند کدگذاری اصلی UTF-16LE است. رشته‌های ASCII و رشته‌ها با سایر کدگذاری‌ها با این تبدیل خراب خواهند شد.
  • فرض می‌کند هر چیزی با نوع ۱ یا ۲ واقعاً رشته است و هر چیز دیگر رشته نیست، در حالی که فیلد نوع در هایوهای واقعی قابل اعتماد نیست.
  • اطلاعات مربوط به اینکه آیا یک کدپوینت صفر به دنبال رشته در هایو آمده است یا نه از دست می‌رود.

همه این موارد به این دلیل رخ می‌دهد که خود هایو حاوی هیچ اطلاعاتی درباره نحوه کدگذاری رشته‌ها نیست (بخش "ENCODING STRINGS" در Win::Hivex::Regedit(3) را ببینید).

شما باید از این گزینه فقط برای هک سریع و اشکال‌زدایی محتویات هایو استفاده کنید، و هرگز در صورتی که خروجی قرار است به برنامه دیگری فرستاده شود یا در هایو دیگری ذخیره گردد، از آن استفاده نکنید.

استفاده از روش‌های ابتکاری (heuristics) برای تحمل سطوح مشخصی از خرابی در هایوها.

این کار ناامن است اما ممکن است امکان استخراج/ادغام کلیدها و مقادیر معتبر را در یک هایوی در غیر این صورت خراب‌شده فراهم کند.

عمق بازگشت استخراج را محدود می‌کند. برای نمونه، یک صدور با حداکثر عمق ۱ فقط مقادیر مستقیماً زیر کلید/پیشوند مشخص‌شده را شامل خواهد شد. حداکثر عمق ۰ هیچ مقداری را بازنمی‌گرداند.

صادرات به طور پیش‌فرض تمام کلیدهای فرزند را شامل می‌شود (کاملاً بازگشتی)، که اگر هایوی رجیستری بزرگ یا حجیم باشد ممکن است مدتی طول بکشد. این رفتار همچنین با ارائه یک مقدار منفی برای عمق قابل دستیابی است.

virt-win-reg(1), Win::Hivex::Regedit(3), Win::Hivex(3), hivexsh(1), dos2unix(1), unix2dos(1), iconv(1), http://libguestfs.org.

Richard W.M. Jones http://people.redhat.com/~rjones

Copyright (C) 2010 Red Hat Inc.

این برنامه یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU GPL) همان‌طور که توسط بنیاد نرم‌افزار آزاد منتشر شده است، بازتوزیع کرده و/یا تغییر دهید؛ چه نسخه ۲ مجوز، یا (به انتخاب خودتان) هر نسخه بعدی.

این برنامه با این امید توزیع شده است که مفید واقع شود، اما بدون هیچ‌گونه ضمانتی؛ حتی بدون ضمانت ضمنی قابلیت فروش یا تناسب با یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی همگانی گنو مراجعه کنید.

شما باید به همراه این برنامه یک نسخه از مجوز عمومی همگانی گنو را دریافت کرده باشید؛ در غیر این صورت، به آدرس زیر نامه بنویسید: Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

2026-06-22 hivex-1.3.24