کار با رجستری خوبی های خودشو داره، می تونه توی نوشتن ویروس ها کمکتون کنه و هم می تونین استفاده های خوب ازش بکنین، توی این پست قراره کار با رجستری در سی شارپ بپردازیم :)
رجستری یه جورایی حکم انباری ویندوز رو داره و همه تنظیمات نرم افزاری، سخت افزاری ویندوز و برنامه ها توش هست.
و وقتی دارین با رجستری کار میکنین قبلش یه بک اپ از تنظیماتش بگرین که اگه زدین داغونش کردین مجبور نشین ویندوز رو عوض کنن و دنبال راه های درست کردنش باشین. و این که برای کار با رجستری باید برنامه رو با دسترسی ادمین اجرا کنین.
برای کار با رجستری توی سی شارپ باید اول از همه به برنامه تون using زیر رو اضافه کنین:
using Microsoft.Win32;
این اموزش پروژه محور نیست و من فقط موارد اصلی و کد هاشو توضیح میدم دیگه شما خودتون هر جور دوست دارین توی پروژه هاتون ازش استفاده کنین.
خواندن و نوشتن مقادیر در رجستری
با استفاده از کد های زیر می تونین مقدار یک متغیر رو از رجستری بخونین:
Registry.GetValue(@"HKEY_CURRENT_USER\Network", "test", "");
متد getvalue چند تا ارگومان می گیره، اولین ارگومانش مسیریه که می خوایم از اون مقادیر رو بخونیم و دومین ارگومانش هم متغیریه که می خواین مقادیرشو بدست بیاریم.
می تونیم کد بالا رو به این صورت بنویسیم و اون مقدار رو توی یک مسیج باکس نشون بدیم:
string s = Registry.GetValue(@"HKEY_CURRENT_USER\Network", "test", "").ToString(); MessageBox.Show(ss);
و با کد های زیر هم می تونین یک متغیر با مقدار مشخص توی رجستری درست کنین:
Registry.SetValue(@"HKEY_CURRENT_USER\Network", "test", "1" ,RegistryValueKind.String);
این متد هم هم مثل همون متد قبلیه، فقط فرقش اینه که یه ارگومان چهارم هم داره که مشخص میکنه نوع متغیر چی باشه. البته ارگومان چهارم الزامی نیست و میشه نزاریمش.
الان با ترکیب همین دو تا خط کد میشه برای برنامه مون یه قفل نرم افزاری از طریق رجستری بزاریم به این صورت که میشه توی فرم لود بگیم که اگه توی مسیر X رجستری کاربر فایل license وجود داشت برنامه براش باز بشه و اگه وجود نداشت برنامه براش باز نشه.
ساخت کلید در رجستری
برای ساخت یک کلید توی رجستری هم کافیه از کد زیر استفاده کنین:
RegistryKey reg = Registry.CurrentUser.OpenSubKey("", true); reg.CreateSubKey(@"test"); reg.Close();
اول از همه اون شاخه ای که می خوایم توش کلید بسازیم رو باز می کنیم و بعد با استفاده از CreateSubKey یه کلید توی اون مسیر درست می کنیم.
حذف کلید در رجستری
برای حذف کلید از رجستری می تونین از کد های زیر استفاده کنین:
try { RegistryKey reg = Registry.CurrentUser.OpenSubKey("", true); reg.DeleteSubKeyTree(@"test"); reg.Close(); } catch (Exception er) { MessageBox.Show(er.Message); }
البته میشه به جای DeleteSubKeyTree از DeleteSubKey هم استفاده کرد، DeleteSubKeyTree یه کلید رو با همه زیر شاخه هاش حذف می کنه ولی DeleteSubKey فقط کلید هایی که زیر شاخه ای ندارن رو حذف می کنه.
به جای CurrentUser هم می تونین ادرس بقیه شاخه های رجستری رو بدین.
دیگه من زیاد حوصلم نمی کشه خودتون این کد ها رو ترکیب کنین و چیز های جدید درست کنین، سئوالی هم بود تو کامنتا بپرسین.
عالی
احسنت به تیم فوق العادتون موفق باشین در پناه خداوند
از این به بعد زیادی مزاحمتون میشم ببخشید به بزرگی خودتون
مخلصم