ویرگول
ورودثبت نام
محمد امامی
محمد امامی
خواندن ۶ دقیقه·۳ سال پیش

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


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


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

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

آموزش رجیستری(registry) در ویندوز 7 و 8 و 8.1 و 10 و 11

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

دستور پایه رجستری در 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/ :فقط مقادیر 32 بیتی را نمایش میدهد

پارامتر reg:64/ :فقط مقادیر 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 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 تایپ میکنه و اینتر میزنه تا اجرا بشه و شامل دستورات کمتری نسبت به 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 BATCH SCRIPT HERE> exit /b :UACPrompt echo Set UAC = CreateObject^(&quotShell.Application&quot^) > &quot%temp%\getadmin.vbs&quot echo UAC.ShellExecute &quotcmd.exe&quot, &quot/c %~s0 %~1&quot, &quot&quot, &quotrunas&quot, 1 >> &quot%temp%\getadmin.vbs&quot &quot%temp%\getadmin.vbs&quot del &quot%temp%\getadmin.vbs&quot exit /B`

با لایک ها نظراتتون خوشحال میشم حمایتم کنید???

دستور reg در cmdکار با رجیستری در cmdرجیستریcmdمدیریت رجیستری با cmd
شاید از این پست‌ها خوشتان بیاید