دوست عزیز، به سایت علمی نخبگان جوان خوش آمدید

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

توجه داشته باشید، در صورتی که عضو سایت نباشید نمی توانید از تمامی امکانات و خدمات سایت استفاده کنید.
نمایش نتایج: از شماره 1 تا 1 , از مجموع 1

موضوع: اموزش کار با رجیستر در #c

  1. #1
    دوست آشنا
    رشته تحصیلی
    computer-software
    نوشته ها
    1,188
    ارسال تشکر
    5,235
    دریافت تشکر: 5,016
    قدرت امتیاز دهی
    218
    Array
    NameEly's: جدید19

    پیش فرض اموزش کار با رجیستر در #c

    در هنگام نوشتن یک برنامه در مواقعی بایستی مقداری را در یک مکان از سیستم کاربر ذخیره کنیم . انتخاب برنامه نویسان در این گونه موارد معمولا از بین سه گزینه ی زیر می باشد :
    1- DataBase
    2- فایل های INI
    3- رجیستری ( تنها در برنامه نویسی برای سیستم های ویندوزی کاربرد دارد )
    استفاده از DataBase : به منظور نگهداری تعداد زیادی از مقادیر ، بهترین گزینه است . همچنین در صورتی که پای امنیت اطلاعات ذخیره شده در میان است ، در انجام این روش شک نکنید . در این روش میتوانید از قابلیت Password Protection که در تمامی بانک های اطلاعاتی وجود دارد ، استفاده کنید .
    استفاده از فایل های INI: در بعضی موارد هم میتوان از این روش استفاده کرد . البته این روش همراه با پیچیدگی و امنیت پایین میباشد .
    استفاده از رجیستری : روشی که قصد توضیح آن را داریم ، همین روش است . این روش دارای امنیت نسبتا پایینی ست . پس امنیت اطلاعات خود را با این روش به خطر نیاندازید . البته میتوانید اطلاعات خود را به صورت Encrypt شده در رجیستری قرار دهید ( مثلا مواقعی که قصد ذخیره یک رمز عبور ، در یک برنامه ساده را دارید ) . یکی از مزایای این روش سادگی و راحتی آن است .
    اگر موافق باشید ، به سراغ مراحل عملی کار برویم :
    یک پروژه ی جدید سی شارپ باز کنید و اسم آن را Registry in CS بگذارید .
    حالا وارد قسمت کد نویسی شده و Name Space زیر را در قسمت General تعریف کنید :
    using Microsoft.Win32;
    حالا میتوانید خیلی راحت در هر جایی از برنامتان از کلاس Registry استفاده کنید .
    در قسمت زیر اجزای این کلاس را مورد بررسی قرار خواهیم داد :
    1- Registry.ClassesRoot
    از این قسمت میتوانید برای انجام عملیات مختلف بر روی شاخه HKEY_CLASSES_ROOT استفاده کنید .
    چون متدها به صورت Alphabetic مرتب شده اند ، بنده هم آنها را به ترتیب توضیح میدهم . البته در یک مورد استثنا وجود دارد . آن هم متد OpenSubKey هست که باید در ابتدا توضیح بدهم ، چون تعداد زیادی از متدها به این متد وابستگی دارند .
    1-1 : OpenSubKey
    بوسیله این متد میتوانید یک زیر کلید را باز کنید . برای مثال به کد زیر دقت کنید :
    RegistryKey reg;
    reg = Registry.ClassesRoot.OpenSubKey("GC",true);
    در این کد نکات زیادی وجود دارد .
    خط اول : یک متغییر از نوع RegistryKey تعریف کردیم .
    خط دوم : مقدار متغییر reg را که در بالا تعریف کرده بودیم ، برابر کلید بازشده ( GC ) قرار دادیم تا بتوانیم عملیات مورد نظر خود را روی کلید باز شده انجام دهیم .
    البته اگر خواستید زیر کلیدهای بیشتری را باز کنید ، باید از کد زیر استفاده کنید :
    RegistryKey reg;
    reg = Registry.ClassesRoot.OpenSubKey("GC\\Clsid",true);

    در همان خط دوم یک کلمه true می بینید . شاید بپرسید این کلمه چه معنایی دارد ؟! این کلمه به برنامه میگوید که کاربر دسترسی به این کلید را تایید میکند ( در بعضی مواقع دسترسی باید تایید شود ) .
    1- 2 : Close
    این متد کلید قبلی را که توسط متد OpenSubKey باز شده بود ، میبندد . بهتر است بعد از هر بار که متد OpenSubKey را به کار میگیرید ، در پایان کارتان متد Close را اجرا کنید .
    1- 3 : CreateSubKey
    وظیفه این متد ساخت یک زیر کلید است . کد زیر را ببینید :
    RegistryKey reg;
    reg = Registry.ClassesRoot.OpenSubKey("GC",true);
    reg.CreateSubKey("NewSubKey");

    1- 4 : DeleteSubKey
    اگر خواستید یک زیر کلید را حذف کنید ، میتوانید از این متد استفاده کنید . کد زیر همان کلید قبلی را که ساختیم پاک میکند :
    RegistryKey reg;
    reg = Registry.ClassesRoot.OpenSubKey("GC",true);
    reg.DeleteSubKey("NewSubKey");

    1- 5 : DeleteSubKeyTree
    این متد یک کلید با تمام زیر کلیدهایش و مقادیر زیر مجموعه اش را پاک میکند :
    RegistryKey reg;
    reg = Registry.ClassesRoot.OpenSubKey("GC",true);
    reg.DeleteSubKeyTree("NewSubKey");
    1- 6 : DeleteValue
    این متد هم که از نامش پیداست . پاک کردن یک مقدار کار این متد است . به کد زیر توجه کنید :
    RegistryKey reg;
    reg = Registry.ClassesRoot.OpenSubKey("GC",true);
    reg.DeleteValue("Your Value");
    1- 7 : Flush
    خوب است در هر قسمتی که کارتان با رجیستری تمام شد ، یک بار این متد را فراخوانی کنید . البته متد Close کار این متد ( Flush ) را هم انجام خواهد داد .
    Registry.ClassesRoot.Flush();
    1- 8 : GetAccessControl
    به MSDN مایکروسافت مراجعه کنید .
    1- 9 : GetSubKeyName
    با استفاده از این کد میتوانید زیر کلیدهای یک کلید رجیستری را بدست بیاورید . فقط قبل از اینکه کد زیر را اجرا کنید ، یک لیست باکس به فرمتان اضافه کنید و خاصیت Name آن را برابر با listBox قرار دهید :
    RegistryKey Reg;
    Reg = Registry.CurrentUser.OpenSubKey("Software");
    //-------------
    foreach (string strSubKeysName in Reg.GetSubKeyNames())
    {
    listBox.Items.Add(strSubKeysName);
    }
    1- 10 : GetValue
    این متد میتواند مقدار یک Value را برگرداند . کد زیر را ببینید :
    RegistryKey reg;
    reg = Registry.ClassesRoot.OpenSubKey("GC",true);
    MessageBox.Show(reg.GetValue("Your Value").ToString());
    1- 11 : GetValueKind
    با این متد میتوانید نوع یک Value را دریافت کنید .
    انواع Value عبارتنداز :
    1- String
    2- Binary
    3- DWORD
    4- Multi-String
    5- Expandable
    به این کد توجه کنید :
    RegistryKey reg;
    reg = Registry.ClassesRoot.OpenSubKey("GC",true);
    MessageBox.Show(reg.GetValueKind("Your Value").ToString());

    1- 12 : GetVlaueNames
    با این کد هم میتوانید مقادیر موجود در یک کلید را بدست بیاورید . کد زیر :
    RegistryKey Reg;
    Reg = Registry.CurrentUser.OpenSubKey("Software\\My APP\\Settings");
    //-------------
    foreach (string strSubKeysName in Reg.GetValueNames())
    {
    listBox1.Items.Add(strSubKeysName);
    }
    1- 13 : Name
    این یکی هم مسیر جاری رجیستری را برمیگرداند :
    RegistryKey reg;
    reg = Registry.ClassesRoot.OpenSubKey("GC",true);
    MessageBox.Show (reg.Name);
    1- 14 : SetAccessControl
    به MSDN مایکروسافت مراجعه کنید .
    1- 15 : SetValue
    بوسیله این متد میتوانید یک مقدار را در رجیستری بنویسید :
    RegistryKey Reg;
    Reg = Registry.LocalMachine.OpenSubKey("SOFTWARE", true);
    //-------------
    Reg.SetValue("My Value", "Program",RegistryValueKind.String);
    یک نکته در این کد وجود دارد . در خط سوم کدها آنجا که نوشته شده RegistryValueKind.String، اینجا نوع متغییر تنظیم شده است . انواع متغیر ها را میتوانید در راهکار 1- 11 مشاهده کنید .
    1- 16 : SubKeyCount
    این یکی هم تعداد زیر کلیدهای یک کلید رجیستری را بازگشت خواهد داد :
    RegistryKey Reg;
    Reg = Registry.LocalMachine.OpenSubKey("SOFTWARE", true);
    //-------------
    MessageBox.Show(Reg.SubKeyCount.ToString());
    1- 17 : ValueCount
    و اما آخرین مورد . بوسیله این تابع میتوانید تعداد متغییرهای داخل یک کلید را بدست بیاورید .
    RegistryKey Reg;
    Reg = Registry.LocalMachine.OpenSubKey("SOFTWARE", true);
    //-------------
    MessageBox.Show(Reg.ValueCount.ToString());

  2. 3 کاربر از پست مفید NameEly سپاس کرده اند .


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. جزوه 100 صفحه ای در مورد تست های غیر مخرب
    توسط M.A.A.H.R در انجمن مهندسي جوش
    پاسخ ها: 5
    آخرين نوشته: 28th November 2012, 06:52 PM
  2. پاسخ ها: 0
    آخرين نوشته: 11th February 2011, 08:48 AM
  3. Samsung G800 خیلی دور خیلی نزدیک
    توسط Bad Sector در انجمن Samsung
    پاسخ ها: 0
    آخرين نوشته: 4th February 2011, 10:09 PM
  4. Samsung i8910 Omnia HD قهرمان چشم بادامی
    توسط Bad Sector در انجمن Samsung
    پاسخ ها: 1
    آخرين نوشته: 4th February 2011, 09:46 PM
  5. مقاله: نهایت دید: مقایسه برترین دوربین های سوپر زوم حال حاضر بازار (قسمت آخر)
    توسط Bad Sector در انجمن معرفی تجهیزات عکاسی
    پاسخ ها: 0
    آخرين نوشته: 2nd February 2011, 04:18 PM

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •