خب خیلی وقت ها نیاز داریم تا برای برناممون یه اسکریپت بنویسیم که یک فایل رجیستری ایجاد کنه در این شرایط نمیتونیم از فایل reg استفاده کنیم چون کاربر ممکنه به طور مقال بفهمه اگر این دیتا رجیستری را حذف بکنه میتونه اشتراک برای برنامه نخره اینجاست که cmd به کمکمون میاد.
اگر مقاله زیر را نخوانده اید به طور کامل مطالعه بفرمایید سپس به این مقاله مراجعه کنید:
آموزش رجیستری(registry) در ویندوز 7 و 8 و 8.1 و 10 و 11
دقت کنید که حتما در این مقاله نیاز به دسترسی ادمینستریتور داریم و باید cmd یا برنامه ما که شامل فایل bat هست در حالت ادمین اجرا بشه که در ادامه توضیح میدهم چگونه به طور خودکار از کاربر درخواست ران از ادمینستریتور بکنید
دستور پایه رجیستری در cmd دستور زیر هست که در ادامه این مقاله تک تک پارامتر ها را با جزئیات خدمت شما خواهم گفت
reg
برای این کار از دستور QUERY باید استفاده کنیم و دقت کنید که برای هر کلید ریشه باید از مخفف آن استفاده کنید ولی زیر کلید ها باید با نام کامل نوشته شوند و برای نوشتن یک زیر ریشه باید / نوشته شود به مخفف ها و مثال زیر توجه کنید:
مثال:
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 ها شامل موارد زیر هستند
پارامتر z/ :معادل باینری نام ها را نشان میدهد
پارامتر reg:32/ :فقط مقادیر 32 بیتی را نمایش میدهد
پارامتر reg:64/ :فقط مقادیر 64 بیتی را نمایش میدهد
مثال:
REG QUERY "HKCU\Printers\Defaults" /f /d /t REG_BINARY
برای این کار از دستور ADD باید استفاده کنیم و دقت کنید باید از نام های مخفف کلید های ریشه که در بالا توضیح دادیم به علاوه نام کامل زیر کلید ها استفاده کرد به مثال و پارامتر های زیر دقت کنید:
پارامتر v/ :نام value را مشخص میکند(در مسیر نباید نام value ها آورده شود)
پارامتر ve/ : برای ویرایش value های Default در کلید ها
پارامتر t/ :نوع value مورد نظر را شخص میکند که در صورت ویرایش یک value نیاز نیست ولی برای ساخت یک value جدید مورد استفاده قرار میگیرد انواع value ها را میتوانید در زیر مشاهده کنید
پارامتر d/ :داده داخل value را مشخص میکند که باید در میان دو "(دابل کوتیشن)قرار بگیرد
پارمتر f/ :در صورت وود داشتن آن value از قبل رجیستری دستور شما را به عنوان یک ویرایش در نظر میگیرد و همواره ویرایش به طور پیش فرض از شما سوال میپرسد که آیا مطمئن هستید که میخواهید این value را ویرایش کنید در صورتی که شما نمیخواهید این پیغام نمایش داده شود و در واقع اسکریپت نویسی میکنید میتوانید از این پارامتر استفاده کنید تا بدون سوال از کاربر ویرایش انجام شود
مثال:
REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d "^%systemroot^%"
برای این کار از دستور 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 با سطح دسترسی ادمین توضیحات کامل به همراه کار آنها را به همراه چند مثال به زبان انگلیسی ببینید:
کافیه کد مورد نظرتونو بنویسید و در یک فایل 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^("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`
با لایک ها نظراتتون خوشحال میشم حمایتم کنید???