کار بار ریجستری با دستورات CMD و .BAT
در ادامه آموزش کار با خط فرمان و نوشتن اسکریت بچ فایل ها با فرمت .Bat در این بخش آموزش کار بار یجستری را با هم مرور میکنیم
همچنین بهتر است این مطالب را مطالعه کنید
درباره Batch File و دستورات CMD و .BAT
معرفی برنامه Reg Converter | تبدیل فایل ریجستری به Bat
رجیستری یکی از عناصر کلیدی در سیستم ویندوز است. ریجستری شامل اطلاعات زیادی در مورد جنبههای مختلف سیستم عامل میباشد. تقریبا تمام برنامههای نصب شده بر روی یک سیستم ویندوز با رجیستری ارتباط برقرار می کنند.
رجیستری شامل دو عنصر اساسی است:
- کلید ها (keys)
- مقادیر (values)
کلید های رجیستری(Registry keys) مشابه پوشه ها هستند. مقادیر رجیستری(Registry values) مشابه پرونده ها هستند. کلید ممکن است حاوی مقادیر یا کلیدهای بیشتر باشد. کلیدها با مسیری شبیه نام مسیر ویندوز اشاره میشوند، با استفاده از backslash(\) ها که برای نشان دادن سطوح سلسله مراتبی آنها میباشد.
در خط فرمان CMD ما میتوانید یک مقدار را بررسی کنیدم، مقداری و یا کلیدی را اضافه، حذف و یا ویرایش کنیم
میتوانید برای مشخص کردن کلیدهای ریشه (Root Keys) در دستور REG از مخفف آنها استفاده کنید؛
- HKEY_CLASSES_ROOT = HKCR
- HKEY_CURRENT_USER = HKCU
- HKEY_LOCAL_MACHINE = HKLM
- HKEY_USERS = HKU
- HKEY_CURRENT_CONFIG = HKCC
REG QUERY
خواندن رجیستری از طریق دستور REG QUERY انجام میشود.
این دستور می تواند برای بازیابی مقادیر هر کلید از داخل رجیستری استفاده شود.
نحوه دستور:
REG QUERY [ROOT\]RegKey /v ValueName [/s] REG QUERY [ROOT\]RegKey /ve --This returns the (default) value
مثال:
<span class="lit">@echo</span><span class="pln"> off REG QUERY HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows</span>
دستور بالا تمامی کلیدها و مقادیر مربوطه آنها را تحت کلید رجیستری HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Windows \ نمایش میدهد
خروجی مثال:
REG ADD
اضافه کردن به رجیستری با استفاده از دستور REG ADD انجام میشود.
توجه داشته باشید که برای اضافه کردن مقادیر به رجیستری، لازم است که دسترسی برای انجام این عملیات داشته باشید. (میتوانید از CMD یا .bat در حالت run as administrator استفاده کنید)
نحوه دستور:
REG ADD [ROOT\]RegKey /v ValueName [/t DataType] [/S Separator] [/d Data] [/f] REG ADD [ROOT\]RegKey /ve [/d Data] [/f]
توضیح سویچ و پارامترها
- /V برای تعیین ValueName نام مقدار استفاده می شود
- /d برای تعیین Data مورد نظر استفاده میشود ( دادهها باید داخل “” قرار بگیرد)
- /f اجبار برای اضافه کردن مقدار بدون نیاز به تایید دوبارهنویسی را فعال میکند Value exists, overwrite Y/N
- /Tبرای تعیین نوع داده استفاده میشود (برای دیدن توضیح نوع داده به اینجا بروید)
- REG_SZ (پیشفرض)
- REG_DWORD
- REG_EXPAND_SZ
- REG_MULTI_SZ
مثال:
@echo off REG ADD HKEY_CURRENT_USER\Console /v Test /d "Test Data" REG QUERY HKEY_CURRENT_USER\Console /v Test
بعد از اضافه شدن موفق پغام The operation completed successfully. نمایش داده میشود.
خروجی مثال:
REG DEL
حذف از رجیستری با استفاده از دستور REG DEL انجام میشود.
توجه داشته باشید که برای حذف کردن مقادیر از رجیستری، لازم است که دسترسی برای انجام این عملیات داشته باشید. (میتوانید از CMD یا .bat در حالت run as administrator استفاده کنید)
نحوه دستور:
REG DELETE [ROOT\]RegKey /v ValueName [/f] REG DELETE [ROOT\]RegKey /ve [/f] REG DELETE [ROOT\]RegKey /va [/f]
توضیح سویچ و پارامترها:
- /V برای تعیین ValueName نام مقدار استفاده می شود
- /d برای تعیین Data مورد نظر استفاده میشود ( دادهها باید داخل “” قرار بگیرد)
- /f اجبار برای اضافه کردن مقدار بدون نیاز به تایید دوبارهنویسی را فعال میکند Value exists, overwrite Y/N
مثال:
@echo off REG DELETE HKEY_CURRENT_USER\Console /v Test /f REG QUERY HKEY_CURRENT_USER\Console /v Test
بعد از حذف شدن موفق پغام The operation completed successfully. نمایش داده میشود. دستور دوم هم که برای بررسی وجود کلید هست پیغام خطا میدهد که کلید وجود ندارد ( صحت عملکرد)
خروجی مثال:
REG COPY
کپی کردن از رجیستری با استفاده از دستور REG COPY انجام میشود.
توجه داشته باشید که برای کپی کردن مقادیر از رجیستری، لازم است که دسترسی برای انجام این عملیات را در هر دو محل منبع و مقصد داشته باشید. (میتوانید از CMD یا .bat در حالت run as administrator استفاده کنید)
نحوه دستور:
REG COPY [\\SourceMachine\][ROOT\]RegKey [\\DestMachine\][ROOT\]RegKey
مثال:
@echo off REG COPY HKEY_CURRENT_USER\Console HKEY_CURRENT_USER\Console\Test REG QUERY HKEY_CURRENT_USER\Console\Test
بعد از کپی شدن موفق پغام The operation completed successfully. نمایش داده میشود.
خروجی مثال:
REG COMPARE
مقایسه کلید های رجیستری با استفاده از دستور REG COMPARE انجام میشود.
نحوه دستور:
REG COMPARE [ROOT\]RegKey [ROOT\]RegKey [/v ValueName] [Output] [/s] REG COMPARE [ROOT\]RegKey [ROOT\]RegKey [/ve] [Output] [/s]
توضیح سویچ و پارامترها:
مقدار Output به مفهوم نوع خروجی را میتوانید :
- /od (فقط تفاوتها)
- /os (فقط تشابهها)
- /oa (همه)
- /on (بدون خروجی)
مثال:
@echo off REG COMPARE HKEY_CURRENT_USER\Console HKEY_CURRENT_USER\Console\Test
خروجی مثال:
در این نمونه پیغام Result Compared: Identical مشابه بودن دو مقدار را تاپید میکند
در این نمونه پیغام Result Compared: Different نشان دهنده وجود تفاوت میباشد که مقادیر متقاوت نشان داده شده است
برای نمونه من در استفاده از برنامه Angry IP scanner یکسری تنظیمات همیشگی برای نوع پورت و ستونهای مورد نیازم جهت نمایش دارم ، که در سیستمهای مشتریهای مختلف باید این تنظیمات رو دوباره وارد کنم
برای سرعت بخشیدن به کار:
به ریجستری میرم و از کلید مربوط به نرم افزار یک خروجی میگیرم
های مورد نیازم را در یک فایل متنی با توجه با دستورات add به یک فایل .bat تغییر میدهم
@ECHO OFF
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "uuid" /t REG_SZ /d "bd229342-64e7-4786-a858-ddbe8a4ee151" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "language" /t REG_SZ /d "system" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "max/Threads" /t REG_SZ /d "100" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "thread/Delay" /t REG_SZ /d "20" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "scan/Dead/Hosts" /t REG_SZ /d "false" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "selected/Pinger" /t REG_SZ /d "pinger.windows" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "ping/Timeout" /t REG_SZ /d "2000" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "ping/Count" /t REG_SZ /d "3" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "skip/Broadcast/Addresses" /t REG_SZ /d "true" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "port/Timeout" /t REG_SZ /d "2000" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "adapt/Port/Timeout" /t REG_SZ /d "true" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "min/Port/Timeout" /t REG_SZ /d "100" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "port/String" /t REG_SZ /d "80,8080,1433,37777,5010,4370" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "use/Requested/Ports" /t REG_SZ /d "true" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "not/Available/Text" /t REG_SZ /d "[n\a]" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "not/Scanned/Text" /t REG_SZ /d "[n\s]" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "first/Run" /t REG_SZ /d "false" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "last/Run/Version" /t REG_SZ /d "3.5.5" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "last/Version/Check" /t REG_SZ /d "1556945764170" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "active/Feeder" /t REG_SZ /d "0" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "display/Method" /t REG_SZ /d "/A/L/L" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "show/Scan/Stats" /t REG_SZ /d "true" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "ask/Scan/Confirmation" /t REG_SZ /d "true" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "window/Maximized" /t REG_SZ /d "false" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "details/Width" /t REG_SZ /d "300" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "details/Height" /t REG_SZ /d "200" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "favorites" /t REG_SZ /d "" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "openers" /t REG_SZ /d "/Windows /Shares###////${fetcher.ip}@@@0@@@###/Web /Browser###http:\\${fetcher.hostname}\@@@0@@@###/F/T/P###ftp:\\${fetcher.hostname}\@@@0@@@###/Telnet###telnet ${fetcher.ip}@@@1@@@###/Ping###ping ${fetcher.ip}@@@1@@@###/Trace route###tracert ${fetcher.ip}@@@1@@@###/Geo locate###http:\\www.angryip.org\iplocate.php?ip=${fetcher.ip}@@@0@@@###/E-mail sample###mailto:somebody@example.com?subject=${fetcher.ip} (${fetcher.hostname})@@@1@@@" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "window/Width" /t REG_SZ /d "1187" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "window/Height" /t REG_SZ /d "691" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "column/Width.fetcher.hostname" /t REG_SZ /d "173" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "selected/Fetchers" /t REG_SZ /d "fetcher.ip###fetcher.ping###fetcher.hostname###fetcher.ports###fetcher.mac###fetcher.mac.vendor###fetcher.netbios" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "column/Width.fetcher.mac.vendor" /t REG_SZ /d "148" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "column/Width.fetcher.mac" /t REG_SZ /d "151" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "column/Width.fetcher.web/Detect" /t REG_SZ /d "153" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "column/Width.fetcher.ports.filtered" /t REG_SZ /d "90" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan" /v "column/Width.fetcher.netbios" /t REG_SZ /d "263" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan\comments" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan\http/Sender" /f
Reg add "HKCU\Software\JavaSoft\Prefs\ipscan\web/Detect" /f
از انجایی که در این مطلب در مورد اجرای برنامه با Java پرتابل نوشتم این دستورات را با دستور اجرای جاوا به صورت پرتابل ترکیب میکنم در نتیجه در هر بار اجرا فایل اسکریپت علاوه با اجرا برنامه بدون نیاز به نصب جاوا کلیدهای ریجستری هم به ویندوز اضافه میشود
درباره نوع داده در ریجستری
String Value: اطلاعات متنی و قابل خواندن یک خطی هستند که از نمونه بارز آنها، میتوان به مسیر پوشهها و فایلها اشاره کرد. این مقادیر از جمله گونههایی هستند که در رجیستری به وفور مورد استفاده قرار میگیرند.
Binary Value: همان گونه که از نام آن برمیآید، این مقادیر تنها از دادههای باینری (صفر و یک) تشکیل شدهاند و معمولا برای خاموش یا روشن کردن (فعال و غیر فعال کردن) تنظیمات به کار میروند.
DWORD Value (32-bit): این مقادیر دقیقا مشابه مقادیر باینری بوده، ولی در عین حال، قادر به ذخیره مقادیری از نوع Integer در دامنه ۳۲ بیت هستند. این مقادیر برای کار با سیستمهای ۳۲ بیتی طراحی شدهاند؛ هر چند میتوان از آنها برای سیستمهای ۶۴ بیتی در حالت Backward نیز استفاده کرد.
QWORD Value (64-bit): دقیقا مشابه DWORD بوده اما محدوده ذخیرهسازی دادههای Integer در آنها ۶۴ بیت است و مسلما برای کار با سیستمهای ۶۴ بیتی طراحی شدهاند.
Multi-String Value: اگر مقادیر String برای ذخیره یک خط اطلاعات متنی بودند، این نوع مقادیر قادر به ذخیره چند خط اطلاعات متنی هستند.
Expandable String Value: دقیقا مشابه مقادیر String بوده، ولی قادر به ذخیره متغیرهای محیطی نیز هستند. برنامه نویسان با این متغیرها به خوبی آشنایی دارند.