آموزش کامل دستور reg در cmd و bat

خیلی وقت ها نیاز داریم تا برای برناممون یه اسکریپت بنویسیم که یک فایل رجیستری ایجاد کنه در این شرایط نمیتونیم از فایل reg استفاده کنیم چون به طور مثال کاربر ممکنه بفهمه اگر این دیتا رجیستری را حذف بکنه میتونه اشتراک برای برنامه نخره یا شما یه ویروسی دارید مینویسید که میخواهید یه سری ویژگی های ویندوز را از کار بندازید تا دیگه جلوی ویروس را نگیرند اینجاست که cmd و batch script به کمکمون میاد.

پیش نیاز های این مقاله چیه؟؟؟

اگر مقاله زیر را نخوانده اید به طور کامل مطالعه بفرمایید سپس به این مقاله مراجعه کنید:

رجیستری چیست ، چگونه کار میکند و چگونه در آن تغییر ایجاد کنیم

دقت کنید که حتما در این مقاله نیاز به دسترسی ادمینستریتور داریم. پس باید cmd یا برنامه ما که شامل فایل bat هست در حالت ادمین اجرا بشه. در ادامه توضیح میدهم چگونه به طور خودکار از کاربر درخواست ران از ادمینستریتور بکنید.

رابط کاربری در صورت نیاز نداشتن به اسکریپت بهینه هست؟؟؟

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

در صورتی که واقعا نیاز به کار با رجیستری در cmd دارید پیشنهاد میشود از اینجا مایکروسافت ویندوز ترمینال را نصب کنید و به جای cmd استفاده کنید. مزیت این برنامه فونت بهتر و رابط کاربری بهتر است(هر چند رابط کاربری GUI یعنی رجیستری ادیتور بهینه تر است).

محیط رجیستری در cmd

دستور پایه رجستری در cmd چیه؟؟؟

دستور پایه رجیستری در cmd دستور زیر هست که در ادامه این مقاله تک تک پارامتر های دستور را با جزئیات خدمت شما خواهم گفت.

reg

نمایش محتوای کلید های ریشه یا زیر کلید ها

برای این کار از دستور QUERY باید استفاده کنیم و دقت کنید که برای هر کلید ریشه باید از مخفف آن استفاده کنید ولی زیر کلید ها باید با نام کامل نوشته شوند و برای نوشتن یک زیر ریشه باید ابتدا / نوشته شود به مخفف ها و مثال زیر توجه کنید:

  • HKEY_CLASSES_ROOT = HKCR
  • HKEY_CURRENT_USER = HKCU
  • HKEY_LOCAL_MACHINE = HKLM
  • HKEY_USERS = HKU
  • HKEY_CURRENT_CONFIG = HKCC

مثال:

REG QUERY "HKCU\Control Panel\Desktop"

همان طور که دقت کردید آدرس را در بین دو ” (دابل کوتیشن) قرار دادم چرا که در ویندوز آدرس هایی که دارای کاراکتر space یا همان فاصله هستند باید در بین دو دابل کوتیشن نوشته شود.

پارامتر های دستور:

برای نوشتن پارامتر ها بعد از وارد کردن آدرس باید پارامتر را وارد کنید شما میتوانید چندین پارامتر را با هم به کار ببرید فقط دقت کنید که بین هر پارامتر باید یک فاصله باشد و بین مسیر رجیستری و پارامتر نیز باید یک فاصله باشد در ادامه به پارامتر ها و چند مثال زیر توجه کنید:

v/ :نشان دادن یک value یا دیتا خاص از کلید ریشه یا کلید مورد نظر.

ve/ :برای دیدن value های پیشفرض با نام Default که در تمام زیر کلید ها و کلید های ریشه موجود است.

s/ :تمام value ها اعم از سیستمی و غیر سیستمی و پیش فرض و غیر پیش فرض را چاپ میکند.

se/ :برای چاپ پارامتر های REG_MULTI_SZ یا همان مولتی اسکرینگ به کار میرود.

f/ :همراه با value ها داده های داخل آنها را نیز چاپ میکند.

k/ : در این پارامتر value ها فقط در کلید مورد نظر جستجو میشوند و به زیر کلید ها مراجعه نمیشود.

d/ :نام را چاپ نمیکند و فقط داده های value های داخل کلید را به نمایش میگذارد.

c/ :نشان میدهد که کلید های شما به حروف بزرگ و کوچک حساس هستند. در حالت عادی نمایش به حروف بزرگ و کوچک حساس نیست. برای مثال Low و low در یک کلید را یکی چاپ میکند.

e/ :فقط مواردی که مشخص میکنید نمایش داده شود و مقادیر مرتبط نشان داده نشود.

t/ :تنها value های با فرمت مدنظر را چاپ میکند این value ها شامل موارد زیر هستند:

  • REG_SZ
  • REG_MULTI_SZ
  • REG_EXPAND_SZ
  • REG_DWORD
  • REG_QWORD
  • REG_BINARY
  • REG_NONE

z/ :معادل باینری نام ها را نشان میدهد.

reg:32/ :فقط مقادیر ۳۲ بیتی را نمایش میدهد.

reg:64/ :فقط مقادیر ۶۴ بیتی را نمایش میدهد.

مثال:

REG QUERY "HKCU\Printers\Defaults" /f /d /t REG_BINARY

اضافه کردن دیتا و کلید و value به رجیستری و یا ویرایش آنها

برای این کار از دستور ADD باید استفاده کنیم و دقت کنید باید از نام های مخفف کلید های ریشه که در بالا توضیح دادیم به علاوه نام کامل زیر کلید ها استفاده کرد به مثال و پارامتر های زیر دقت کنید:

v/ :نام value را مشخص میکند(در مسیر نباید نام value ها آورده شود)

ve/ : برای ویرایش value های Default در کلید ها

t/ :نوع value مورد نظر را شخص میکند که در صورت ویرایش یک value نیاز نیست ولی برای ساخت یک value جدید مورد استفاده قرار میگیرد انواع value ها را میتوانید در زیر مشاهده کنید

  • REG_SZ
  • REG_MULTI_SZ
  • REG_EXPAND_SZ
  • REG_DWORD
  • REG_QWORD
  • REG_BINARY
  • REG_NONE

d/ :داده داخل value را مشخص میکند که باید در میان دو “(دابل کوتیشن)قرار بگیرد.

f/ :در صورت وجود داشتن آن value از قبل رجیستری دستور شما را به عنوان یک ویرایش در نظر میگیرد. همواره ویرایش به طور پیش فرض از شما سوال میپرسد که آیا مطمئن هستید که میخواهید این value را ویرایش کنید در صورتی که شما نمیخواهید این پیغام نمایش داده شود و در واقع اسکریپت نویسی میکنید میتوانید از این پارامتر استفاده کنید تا بدون سوال از کاربر ویرایش انجام شود.

مثال:

REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d "^%systemroot^%"

حذف دیتا و کلید و value از رجیستری

برای این کار از دستور DELETE باید استفاده کرد و دقت کنید باید از نام های مخفف کلید های ریشه که در بالا توضیح داده شده به علاوه زیر کلید ها استفاده کرد در ادامه به پارامتر ها و مثال های زیر توجه کنید:

ve/ :مقادیر Default را حذف میکند

va/ :تمام مقادیر کلید را حذف میکند (دقت کنید مقادیر یعنی value ها بنابراین زیر کلید ها حذف نمیشوند)

f/ :در حالت پیش فرض برای حذف کردن یک value از کاربر درخواست میشود تایید کند که میخواهد این value را حذف نماید. در صورت استفاده این پارامتر، پرسش انجام نخواهد شد.

مثال:

REG DELETE "HKLM\Software\MyCo\MyApp\Timeout"

کلید Timeout به همراه تمام زیر کلید ها و value ها حذف میشود.

مثال دوم:

REG DELETE "HKLM\Software\MyCo" /v MTU

value به نام MTU از مسیر HKLM\Software\MyCo حذف میشود.

آیا دستورات دیگری هم وجود دارد؟؟؟

بله دستورات دیگری هم وجود دارد که در این مقاله نمیگنجید و کاربرد فوق العاده کمی دارند و در موارد خاص از آنها استفاده میشود. شما میتوانید با وارد کردن هر یک از دستورات زیر در cmd یا windows terminal:cmd با سطح دسترسی ادمین توضیحات کامل به همراه کار آنها را به همراه چند مثال به زبان انگلیسی ببینید:

۱-REG QUERY /?

۲-REG ADD /?

۳-REG DELETE /?

۴-REG COPY /?

۵-REG SAVE /?

۶-REG RESTORE /?

۷-REG LOAD /?

۸-REG UNLOAD /?

۹-REG COMPARE /?

۱۰-REG EXPORT /?

۱۱-REG IMPORT /?

۱۲-REG FLAGS /?

حالا چطوری در اسکریپت(bat) اینها را به کار ببریم؟

کافیه کد مورد نظرتونو بنویسید و در یک فایل txt ذخیره کنید.

به فایل اکسپلورر برید و نمایش پسوند فایل ها را فعال کنید و اون فایل txt را rename کنید.

نام فایل مهم نیست ولی پسوند را از txt به bat یا cmd تغییر بدید.(در حد مبتدی این پسوند ها با هم فرق خاصی ندارند ولی در کل بدونید بد نیست. bat فایل اجرایی msdos بوده که به ویندوز منتقل شده. cmd دستورات شما را در cmd تایپ میکنه و اینتر میزنه تا اجرا بشه. cmd شامل دستورات کمتری نسبت به bat هست.)

حالا چطوری اسکریپت خودکار ران از ادمین را بپرسه تا کاربر دچار مشکل نشه یا ویروس لو نره؟؟؟

کافیه کد خودتون را در جای your script در کد زیرقرار بدید و مشکلی نیست که اسکریپتتون حتی چند خط باشه و دوباره به صورت bat ذخیره کنید (دقت کنید در اینجا استفاده از پسوند cmd باعث ارور دادن میشه چون دستور اونجا خط به خط وارد و اینتر زده میشه):

@echo off

call :isAdmin

if %errorlevel% == 0 (

goto :run

) else (

echo Requesting administrative privileges...

goto :UACPrompt

)

exit /b

:isAdmin

fsutil dirty query %systemdrive% >nul

exit /b

:run


your script

exit /b

:UACPrompt

echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"

echo UAC.ShellExecute "cmd.exe", "/c %~s0 %~1", "", "runas", 1 >> "%temp%\getadmin.vbs"

"%temp%\getadmin.vbs"

del "%temp%\getadmin.vbs"

exit /B`

1 Comment
  1. […] آموزش کامل دستور Reg در Cmd و Bat […]

دیدگاه ها غیر فعال است.